【问题标题】:Using a UIGestureRecognizer in a UIWebView在 UIWebView 中使用 UIGestureRecognizer
【发布时间】:2010-10-17 05:15:04
【问题描述】:

以前我使用点击检测窗口技术来检测 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];

【问题讨论】:

    标签: iphone cocoa-touch


    【解决方案1】:

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

    UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap)];
    recognizer.delegate = self;
    [self.myWebView addGestureRecognizer:recognizer];
    

    并启用同时手势识别(因为 UIWebView 可能自己设置了一些识别器,你的被跳过了):

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

    【讨论】:

    • 这对我来说效果很好。您还可以在gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer 中添加条件来隔离您感兴趣的手势类。
    【解决方案2】:

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

    我不知道用户是否必须与您的 Web 视图交互,但您可以尝试在 UIWebView 之上添加 UIView 并将手势识别器添加到此视图。它仍应将无法识别的触摸事件传播到底层 Web 视图,从而保持其交互性完好无损。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 2018-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      相关资源
      最近更新 更多