如何在uiwebview中实现触摸事件?

时间:2011-06-07 04:34:36

标签: iphone objective-c uiwebview event-handling touch

我尝试过在本网站和其他网站上提供的各种解决方案,以便在uiwebview上实现触摸事件。但我仍然无法做到这一点。实际上,我已经创建了一个文章阅读器应用程序。在这里,我在正常的uiview上添加了一个uiwebview。现在,我想跟踪特定webview上的一些用户触摸事件。 当我在普通视图上执行此操作时,它可以完美地工作。但是,如果我在webview上尝试它。它停止工作。 我之前尝试的解决方案是

  1. 实施触控方式 touchbegan touchended touchmoved 触摸已取消
  2. 2实现uigesturerecognizer 3实现窗口触摸事件,如发送事件

    现在如果有人可以帮助我或者告诉我我做错了什么或者新的解决方案(除此之外),那么我将非常感激。

2 个答案:

答案 0 :(得分:2)

在UIWebView上放置一个透明的UIVIew来捕捉触摸。然后,您可以使用touchesBegan deletage方法对它们进行操作或者可选地将它们传递给UIWebView。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.myUIWebView touchesBegan:touches withEvent:event];
}

查看以前的帖子了解详情:iOS - forward all touches through a view

答案 1 :(得分:0)

我将UIWebView子类化,并且只是在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:)];
        }
    }
}