UIWebView разрешает постукивание, но предотвращает прокрутку - PullRequest
1 голос
/ 03 ноября 2011

У меня есть UIWebView (размер которого полностью соответствует HTML), и я хочу поместить это веб-представление в UIScrollView вместе с несколькими другими представлениями.

Если я установил userInteractionEnabled = NO навеб-просмотр ... он работает отлично, за исключением того, что я не могу нажать на ссылку в веб-представлении.Но если я оставлю userInteractionEnabled = YES в веб-представлении ... тогда, если пользователь проведет пальцем по веб-представлению, а не прокручивает UIScrollView, он отскочит текст внутри веб-представления (то есть в представлении прокрутки).

Любая помощь в этом?

Спасибо!

Ответы [ 4 ]

8 голосов
/ 03 ноября 2011

Собираем кучу других ответов ... для меня это очень хорошо работает:

if ([_webView respondsToSelector:@selector(scrollView)]) {
    _webView.scrollView.scrollEnabled = NO; // available starting in iOS 5
} else {
    for (id subview in _webView.subviews)
        if ([[subview class] isSubclassOfClass: [UIScrollView class]])
            ((UIScrollView *)subview).scrollEnabled = NO;        
}
0 голосов
/ 06 февраля 2012

У меня есть одно "тело" WebView в моем окне просмотра раскадровки.

Чтобы предотвратить прокрутку «тела» (WebView), это прекрасно работает:

- (void)viewDidLoad{
    ...
    body.scrollView.scrollEnabled=NO;
  }

Если текст слишком большой, он ведет себя как «переполнение: скрытый» в HTML5 / CSS3.

0 голосов
/ 03 ноября 2011

Чтобы отключить прокрутку в webView, вам нужно сделать это -

    for(id subview in self.scrollView.subviews)
    {
        if([[subview class] isSubclassOfClass:[UIWebView class]])
            ((UIScrollView *)subview).scrolling = NO;
    } 

Здесь происходит то, что мы перебираем все подпредставления внутри вашего основного UIScrollView и отключаем прокрутку для вида, который UIWebView. Это возможно, поскольку UIWebView наследуется от UIScrollView.

Надеюсь, это поможет.

ОБНОВЛЕНИЕ: исправление. как указывает @lxt - UIWebView не наследуется от UIScrollView. Он содержит представление прокрутки, но само веб-представление является просто подклассом UIView.

0 голосов
/ 03 ноября 2011

Да, теперь это произойдет, это похоже на представление прокрутки в другом представлении прокрутки, и вы не можете прокрутить родительское представление прокрутки при прокрутке дочернего представления прокрутки. Я не думаю, что то, что вы хотите, было бы возможно с этим. Потому что, если содержимое веб-страницы увеличивается, то дочернее веб-представление определенно будет прокручиваться в пределах ....

...