UIWebView允许点击,但阻止滚动

问题描述:

我有一个UIWebView(已被调整大小,以完全包含HTML),我想把这个Web视图到一个UIScrollView以及一些其他视图。UIWebView允许点击,但阻止滚动

如果我在网络视图上设置了userInteractionEnabled = NO ...除了我无法点击网络视图中的链接之外,它完美地工作。但是,如果我在web视图上保留userInteractionEnabled = YES ...,那么如果用户在Web视图内滑动而不是滚动UIScrollView,它会在Web视图内(即滚动视图内)反转文本。

对此有何帮助?

谢谢!

拼凑一堆其他的答案......这个作品真的很适合我:

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

是的,现在会发生,它就像是另一个滚动视图上的滚动视图,并且您在滚动子滚动视图时无法滚动父滚动视图。我不认为你想要这样做是可能的。原因如果网页内容的增加那么孩子的WebView是肯定会围绕内滚动....

要关闭webView滚动,你需要做到这一点 -

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

这里发生的事情是我们正在遍历主要UIScrollView &中的所有子视图,关闭滚动以查看UIWebView。这是可能的,因为UIWebViewUIScrollView继承。

希望这会有所帮助。

UPDATE: a correction。正如@lxt指出的那样 - UIWebView不会从UIScrollView继承。它包含一个滚动视图,但Web视图本身只是一个UIView子类。

+0

几件事:'UIWebView' *不*从'UIScrollView'继承。它包含一个滚动视图,但Web视图本身只是一个'UIView'子类。此外,这个答案需要稍微调整,以适用于除iOS 5之外的任何操作系统,因为5以前的web视图的scrollView属性并非公开可用。 – lxt

+0

哦,好的,谢谢你的额外信息 –

我有一个网页视图“身体”关于我自己的故事板视图。

为了防止滚动“身体”(web视图),这个伟大的工程:

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

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