如何在 UIWebView 上的 Long Tap 手势上创建 Tap 事件?

Posted

技术标签:

【中文标题】如何在 UIWebView 上的 Long Tap 手势上创建 Tap 事件?【英文标题】:How to create Tap event on Long Tap gesture on UIWebView? 【发布时间】:2012-11-07 00:48:54 【问题描述】:

我在UIWebView 上添加了长按手势。但我希望UIWebView 在识别出我的 Long Tap 之前处理一个标准的 Tap 事件。 (Long Tap 应该处理两个手势——一个简单的 Tap 和我的 Long Tap)。如何做到这一点?

我认为需要在TouchBegin 上向UIWebView 发送Tap 事件。对吗?

【问题讨论】:

我想将它们一起工作,但 UIWebView 不处理长按的单击。 SingleTapGestureRecognizer 和 DoubleTapGestureRecognizer 在 UIWebView 上根本不起作用! 【参考方案1】:

正确的代码:

- (void)viewDidLoad 
    UILongPressGestureRecognizer* gesture = [[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)] autorelease];
    gesture.delegate = self;
    [myWebView addGestureRecognizer:gesture];


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

【讨论】:

【参考方案2】:

请参考本节 UIGestureRecognizerDelegate

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIGestureRecognizerDelegate_Protocol/Reference/Reference.html

你发现当 2 个手势同时工作时会调用它。

gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:

【讨论】:

谢谢!但是我已经用return true; 添加了这个方法,并且只有长按仍然有效。我还应该做什么? 请检查此方法中的单点触摸事件是否识别它们。在上述方法中写入NSLog(); 语句。 它不会在任何水龙头上运行(长按和轻按)。我使用过:- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 并激活了UIGestureRecognizerDelegate 协议。 您将委托分配给您的班级。 但是在这种情况下该怎么做呢? UIWebView.gestures 仅包含我的 LongTap 手势。

以上是关于如何在 UIWebView 上的 Long Tap 手势上创建 Tap 事件?的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin 表单自定义 GridView Tap 和 Long Tap 不能一起工作

检测 UIWebView 中的文本亮点

如何控制 UIWebView 上的触摸? (苹果手机)

如何在 iPad 上的 UIWebView 中上传文件?

UIWebView添加手势VS设置背景色

如何在 UIWebView 上的键盘上方显示工具栏 [关闭]