Как включить горизонтальную прокрутку и отключить вертикальную прокрутку в 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);
Ширина должна быть связана с шириной прокрутки внутри прокрутки.