将UITapGestureRecognizer添加到UIWebView

24

在iOS中,是否可以在UIWebView上放置一个轻拍手势识别器,以便当有人单击网页视图时执行某个操作?

下面的代码似乎无法在我轻触我的webView时触发handleTap。

谢谢。

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self 
                                                                      action:@selector(handleTap)];
tap.numberOfTapsRequired = 1;

[webView addGestureRecognizer:tap];
[tap release]; 


-(void) handleTap {
    NSLog(@"tap");
}
3个回答

42

我发现必须要实现这个方法才能让它工作:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

我发现在网页视图中显示PDF文档时不需要这个,但在显示文本、HTML或图像文档时需要。 - arlomedia
使用相同的代码,它第一次运行时可以正常运行,但之后却无法运行! - dellos

24

你的UIViewController子类应该实现UIGestureRecognizerDelegate协议,并在适当的时候从gestureRecognizer:shouldReceiveTouch:方法中返回YES

然后将其分配给你的UIGestureRecognizer的委托属性。

tap.delegate = self;

10
  • 将UIGestureRecognizerDelegate添加到视图控制器

  • <UIGestureRecognizerDelegate>
    
  • 给Webview添加点击手势。

  • UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(flip)];
    tap.numberOfTapsRequired = 1;
    tap.delegate = self;
    [_webview addGestureRecognizer:tap];
    
  • - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer    shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
        return YES;
    }
    

  • 这是最完整的答案。您不需要使用tap.numberOfTapsRequired,因为默认值为1。 - JScarry

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