Search code examples
iphoneuiwebviewuiscrollview

How do I enable horizontal scrolling and disable vertical scrolling in UIWebview?


My UIWebView should not allow vertical scrolling. However, horizontal scrolling should possible.

I have been looking through the documentation, but couldn't find any hints.

The following code disables both scrolling directions, but I want to only disable vertical:

myWebView.scrollView.scrollEnabled = NO;

How do I solve this problem?


Solution

  • Enable Horizontal scrolling and disable Vertical scrolling:

    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);
    }
    

    the 2nd line there will hide the vertical scroll indicator. Checking if "scrollView.contentOffset.y < zero" will disable the bouncing when you attempt to scroll downwards. You can also do: scrollView.bounces=NO to do the same thing!! By just looking at Rama Rao's answer i can tell that his code will reset the scrollView to (0.0) the moment you try to scroll vertically, thereby moving you away from your horizontal position, which is not good.

    Enable vertical scrolling and disable Horizontal scrolling:

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

    PEACE