UIWebView和取消点击手势

4

我在iPad上有一个主窗口xib。主窗口有敲击手势识别器,当用户点击屏幕时,会显示/隐藏工具栏。主窗口中还有一个网页视图。

如果用户在Web视图中点击链接,我该如何取消手势呢?我不希望他们点击链接时工具栏切换。

谢谢。

1个回答

5

您需要检查视图是否应该接收触摸事件,实现以下操作:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
  // test if our control subview is on-screen
  if (self.view.superview != nil) {
    if ([touch.view isKindOfClass:[UIWebView class]]) {
      // we touched our UIWebView
      return NO; // ignore the touch
    }
  }
  return YES; // handle the touch
}

如果您想使用UITapGestureRecognizer,需要按照此处所述的方式对UIWebView进行子类化:https://github.com/psychs/iphone-samples/tree/4028ab78af92ab17465338575b78ed80310a613f/WebViewTappingHack


我希望WebView能够接收它,而不仅仅是链接。 - codeetcetera
是的。touch.view类是UIWebBrowserView,我似乎无法作为一个类来访问它。我尝试使用包含webview的scrollview进行isDescendantOf操作,但这也不起作用。webview是全屏的,所以如果条件返回NO,我就无法获取我的工具栏。我需要特别捕捉链接。 - codeetcetera
你可以使用除UITapGestureRecognizer之外的其他手势。如果你想要点击,你应该像这个例子一样子类化UIWebView:https://github.com/psychs/iphone-samples/tree/4028ab78af92ab17465338575b78ed80310a613f/WebViewTappingHack - Matteo Alessani
抱歉,我被其他问题分心了。有没有办法阻止事件继续向上传递到UIResponder链中? - codeetcetera

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接