如何在uiwebview中实现触摸事件?
Posted
技术标签:
【中文标题】如何在uiwebview中实现触摸事件?【英文标题】:How to implement touch events in uiwebview? 【发布时间】:2011-06-07 04:34:36 【问题描述】:我尝试了本网站和其他网站上提供的各种解决方案来在 uiwebview 上实现触摸事件。但我仍然无法做到这一点。实际上,我已经创建了一个文章阅读器应用程序。在这里,我在普通的uiview上添加了一个uiwebview。现在,我想跟踪该特定 web 视图上的一些用户触摸事件。 当我在正常视图上执行此操作时,它可以完美运行。但是,如果我在 webview 上尝试一下。它停止工作。 我之前尝试过的解决方案是
-
实现触摸方法,例如
开始接触
触达
感动
触摸取消
2 实现uigesturerecognizer 3 实现发送事件等窗口触摸事件
现在,如果有人可以帮助我或告诉我哪里做错了或有新的解决方案(除此之外),我将不胜感激。
【问题讨论】:
【参考方案1】:在 UIWebView 顶部放置一个透明的 UIVIew 以捕获触摸。然后,您可以对它们进行操作,也可以选择使用 touchesBegan 删除方法将它们传递给 UIWebView。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
[self.myUIWebView touchesBegan:touches withEvent:event];
查看之前的帖子了解详情:ios - forward all touches through a view
【讨论】:
但我的 uiwebview 包含滚动。不要以为我这样做会阻止它的滚动。 我尝试了您的解决方案,但问题是出现了运行时警告,即无法恢复以前选择的帧。【参考方案2】:我对@987654321@ 进行了子类化,并且只是在 2 级深的子视图中“吸食”到它的手势识别器上(你可以递归地进行,但这对于 iOS6-7 来说已经足够了)。 然后你可以对触摸位置和手势识别器的状态做任何你想做的事情。
for (UIView* view in self.subviews)
for (UIGestureRecognizer* recognizer in view.gestureRecognizers)
[recognizer addTarget:self action:@selector(touchEvent:)];
for (UIView* sview in view.subviews)
for (UIGestureRecognizer* recognizer in sview.gestureRecognizers)
[recognizer addTarget:self action:@selector(touchEvent:)];
【讨论】:
以上是关于如何在uiwebview中实现触摸事件?的主要内容,如果未能解决你的问题,请参考以下文章
UIWebView 在我的 UITableViewCell 子类中覆盖触摸事件
UIWebView 在 UIScrollView 内消耗触摸事件