如何在UIWebview中启用水平滚动并禁用垂直滚动



我的UIWebView不应该允许垂直滚动。但是,水平滚动应该是可能的。

我一直在浏览文档,但找不到任何提示。

以下代码禁用了两个滚动方向,但我只想禁用垂直方向:

myWebView.scrollView.scrollEnabled = NO;

如何解决此问题?

启用水平滚动并禁用垂直滚动:

myWebView.scrollView.delegate = self;
[myWebView.scrollView setShowsVerticalScrollIndicator:NO];
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView.contentOffset.y > 0  ||  scrollView.contentOffset.y < 0 )
        scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x, 0);
}

那里的第二行将隐藏垂直滚动指示器。检查"scrollView.contentOffset.y

启用垂直滚动并禁用水平滚动:

myWebView.scrollView.delegate = self;
[myWebview.scrollView setShowsHorizontalScrollIndicator:NO];
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView.contentOffset.x > 0)
        scrollView.contentOffset = CGPointMake(0, scrollView.contentOffset.y);
}

和平

要使其完全工作,请编写:

 webview.scrollView.delegate = self;
    [webview.scrollView setShowsHorizontalScrollIndicator:NO];
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView.contentOffset.x > 0)
        scrollView.contentOffset = CGPointMake(0, scrollView.contentOffset.y);
    if (scrollView.contentOffset.x < 0)
        scrollView.contentOffset = CGPointMake(0, scrollView.contentOffset.y);
}

我刚刚添加了最后两行,因为当你像pnizzle那样写它时,你不能从右边滚动到左边,而只能从左边滚动到右边。

祝你好运

-(void) scrollViewDidScroll:(UIScrollView *)scrollView{
    if (scrollView.contentOffset.y>web.frame.origin.x) {
        scrollView.contentOffset = CGPointMake(0, 0);
    }
}

通过这种方式,我们可以解决问题。采用全局滚动视图对象,如下所示:

UIScrollView* scrollView =web.scrollView;

将委托设置为滚动视图,然后调用-(void) scrollViewDidScroll:(UIScrollView *)scrollView,您可以获得结果。我在两个版本(iOS 5和iOS 4.2)中都检查了它

Swift 4.2 :

启用水平滚动并禁用垂直滚动:

webview.scrollView.delegate = self
webView.scrollView.showsHorizontalScrollIndicator = false
func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView.contentOffset.y > 0  ||  scrollView.contentOffset.y < 0{
        scrollView.contentOffset = CGPoint(x: scrollView.contentOffset.x, y:0)
    }
}

启用垂直滚动并禁用水平滚动:

webview.scrollView.delegate = self
webView.scrollView.showsHorizontalScrollIndicator = false
func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView.contentOffset.x > 0 {
        scrollView.contentOffset = CGPoint(x: 0, y:scrollView.contentOffset.y)
    }
}

Leave scrollEnabled == YES。 滚动视图将根据内容大小限制滚动。 要仅允许水平滚动,请将 contentSize 设置为如下所示:

scrollView.contentSize = CGSizeMake(1000, scrollView.bounds.size.height);
宽度

应与滚动视图中滚动的任何内容的宽度相关。

i created three seperate UIScrollViews because I wanted three rows, added the IBOutlet below than added the following properties, it gave me no vertical scrolling and horizontal scrolling, i created my own buttons and just added them into the subview for the scroll view i wanted.

@IBOutlet 弱变量返回ScrollVIew: UIScrollView!

    @IBOutlet weak var chestScrollVIew: UIScrollView!
    
    @IBOutlet weak var legScrollVIew: UIScrollView!
override func viewDidLoad() {
        super.viewDidLoad()
        
        backScrollVIew.alwaysBounceHorizontal = true
        backScrollVIew.isScrollEnabled = true
        backScrollVIew.contentSize = CGSize(width: 500, height: 100)
        
        chestScrollVIew.isScrollEnabled = true
        chestScrollVIew.isPagingEnabled = false
        chestScrollVIew.contentSize = CGSize(width: 1000, height: 100)
        legScrollVIew.alwaysBounceHorizontal = true
        legScrollVIew.isScrollEnabled = true
        legScrollVIew.contentSize = CGSize(width: 1000, height: 100)

最新更新