UIWebView允许点击但阻止滚动

时间:2011-11-03 05:54:06

标签: iphone uiview uiwebview uiscrollview scroll

我有一个UIWebView(已完全包含html的大小),我想将此Web视图与其他一些视图一起放入UIScrollView。

如果我在网络视图上设置userInteractionEnabled = NO ...除了我无法点击网络视图中的链接外,它的效果非常好。但是,如果我在Web视图上留下userInteractionEnabled = YES ...那么,如果用户在Web视图中滑动而不是滚动UIScrollView,它会在Web视图内部(在滚动视图内)反弹文本。 / p>

对此有何帮助?

谢谢!

4 个答案:

答案 0 :(得分:8)

将一堆其他答案拼凑在一起......这对我来说非常有用:

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

答案 1 :(得分:0)

是的,现在会发生这种情况,就像另一个滚动视图上的滚动视图一样,滚动子滚动视图时无法滚动父滚动视图。我不认为你想要的是什么。因为如果网页内容增加,那么子webview肯定会在...内滚动。

答案 2 :(得分:0)

要关闭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继承。它包含一个滚动视图,但Web视图本身只是一个UIView子类。

答案 3 :(得分:0)

我的故事板视图中有一个WebView“正文”。

为了防止滚动“正文”(WebView),这非常有效:

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

如果文字太大,它的行为就像HTML5 / CSS3的“溢出:隐藏”。