Iphone 在UIWebView中使用UIGestureRecognitor

Iphone 在UIWebView中使用UIGestureRecognitor,iphone,cocoa-touch,Iphone,Cocoa Touch,以前我使用点击检测窗口技术来检测UIWebView中的点击,但现在我尝试使用手势识别器。以下代码位于视图控制器的viewDidLoad方法中,该视图控制器具有单个UIWebView。这段代码编译得很好,但从未调用handleTap方法。这看起来应该很简单 // Configure a gesture recognizer to detect taps in the web view UITapGestureRecognizer *singleTap = [[UITapGestureRecogni

以前我使用点击检测窗口技术来检测UIWebView中的点击,但现在我尝试使用手势识别器。以下代码位于视图控制器的viewDidLoad方法中,该视图控制器具有单个UIWebView。这段代码编译得很好,但从未调用handleTap方法。这看起来应该很简单

// Configure a gesture recognizer to detect taps in the web view
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap)];
[self.myWebView addGestureRecognizer:singleTap];    
[singleTap release];

[super viewDidLoad];

由于
UIWebView
已经处理了很多触摸事件,因此添加自己的手势识别器可能有点棘手


我不知道用户是否必须与您的web视图交互,但您可以尝试在
UIWebView
顶部添加
UIView
,并将手势识别器添加到此视图。它仍应将无法识别的触摸事件传播到基础web视图,从而保持其交互性不变。

将视图控制器设置为识别器委托:

UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap)];
recognizer.delegate = self;
[self.myWebView addGestureRecognizer:recognizer];
并启用同步手势识别(由于UIWebView本身可能设置了一些识别器,因此将跳过您的识别器):


这对我很有效。您还可以在
手势识别器中添加条件:shouldRecognizeSimultaneouswithGestureRecognizer
,以隔离您感兴趣的手势类。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
    return YES;
}