Как включить горизонтальную прокрутку и отключить вертикальную прокрутку в UIWebview?

Мой UIWebView не должен допускать вертикальную прокрутку. Тем не менее, возможна горизонтальная прокрутка.

Я просматривал документацию, но не мог найти никаких подсказок.

Следующий код отключает обе прокрутки, но я хочу отключить только вертикаль:

myWebView.scrollView.scrollEnabled = NO;

Как решить эту проблему?

Ответ 1

Включить горизонтальную прокрутку и отключить вертикальную прокрутку:

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 < zero" отключит отскок при попытке прокрутки вниз. Вы также можете сделать: scrollView.bounces = NO, чтобы сделать то же самое! Просто взглянув на ответ Рамы Рао, я могу сказать, что его код будет reset scrollView до (0.0) в тот момент, когда вы пытаетесь прокручивать по вертикали, тем самым перемещая вас от горизонтального положения, что не очень хорошо.

Включить вертикальную прокрутку и отключить горизонтальную прокрутку:

myWebView.scrollView.delegate = self;
[myWebview.scrollView setShowsHorizontalScrollIndicator:NO];

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

МИР

Ответ 2

-(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)

Ответ 3

Чтобы сделать полную работу, напишите:

 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, вы не можете прокручивать ее справа налево, но все же слева направо.

Удачи.

Ответ 4

Оставить scrollEnabled == YES. Прокрутка будет ограничивать прокрутку в зависимости от размера содержимого. Чтобы разрешить только горизонтальную прокрутку, установите contentSize примерно так:

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

Ширина должна быть связана с шириной прокрутки внутри прокрутки.