如何在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】:

我对@9​​87654321@ 进行了子类化,并且只是在 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中实现触摸事件?的主要内容,如果未能解决你的问题,请参考以下文章

将触摸事件从 uiview 传输到 uiwebview

UIWebView 在我的 UITableViewCell 子类中覆盖触摸事件

如何控制 UIWebView 上的触摸? (苹果手机)

UIWebView 在 UIScrollView 内消耗触摸事件

嵌入在 UIScrollview 中的 UIWebview 中的 Javascript 触摸事件

UIViewController 停止在 UIWebView 上接收触摸事件