UIWebView 上的 UIScrollView 和 UITapGestureRecognizer 冲突
Posted
技术标签:
【中文标题】UIWebView 上的 UIScrollView 和 UITapGestureRecognizer 冲突【英文标题】:UIScrollView on UIWebView and UITapGestureRecognizer conflicts 【发布时间】:2012-03-11 07:35:08 【问题描述】:我在UIViewController
上有一个UITapGestureRecognizer
,里面有一个UIScrollView
和UIWebView
。只有在我滚动UIWebView
后,它才能识别轻击手势。我怎么能防止这种情况?基本上,当我不滚动 Web 视图时,我希望检测到点击手势。我环顾四周,发现最接近的是:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer*)otherGestureRecognizer
return YES;
但不确定如何在滚动时使用它来禁用点击。任何的想法?
我想做的另一件事是禁用 UITapGestureRecognizer,当单击 UIWebView 上的链接时(应该调用)。在调用 shouldStartLoadWebRequest 之前,我检查了是否调用了点击手势识别器。基本上,当单击 UIWebView 上的链接时,它不应触发由 UITapGestureRecongnizer 调用的操作。关于如何做到这一点的任何想法?
【问题讨论】:
您能否澄清一下您的视图结构:您的网页视图在您的滚动视图中吗?还是它们彼此相邻? 是的,网页视图在滚动视图中。所以是 UIViewController 的 view > UIScrollView 里面有很多 UIWebView 可以水平滚动。 @xonegirlz 你解决了吗?我也有同样的问题 【参考方案1】:所以 Apple 的文档 strongly recommends 你不会在滚动视图中嵌套 UIWebView
:
重要提示:您不应在 UIScrollView 对象中嵌入 UIWebView 或 UITableView 对象。如果这样做,可能会导致意外行为,因为这两个对象的触摸事件可能会混淆和错误处理。
在 ios 5 及更高版本上可以直接访问 UIWebView
(使用 scrollView
)属性上的底层滚动视图 - 玩弄这个可能对你有帮助。
【讨论】:
我没有将它直接嵌套在 UIScrollView 中。我有一个 UIViewController,然后里面是 UIWebView,是的,我能够获得 UIWebView 滚动视图,但这并没有帮助。我正在寻找你的一些想法,“玩 UIWebView 滚动视图”,因为我尝试了一堆东西,但没有成功以上是关于UIWebView 上的 UIScrollView 和 UITapGestureRecognizer 冲突的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView里面的UIWebView上面的UIToolbar
UIScrollView 内的 UIWebView 并滚动到 Web 视图中的选定字段
UIScrollView 上的 UITapGestureRecognizer