iOS UITapGestureRecognizer 啥都不做?

Posted

技术标签:

【中文标题】iOS UITapGestureRecognizer 啥都不做?【英文标题】:iOS UITapGestureRecognizer doing nothing at all?iOS UITapGestureRecognizer 什么都不做? 【发布时间】:2010-09-21 17:30:41 【问题描述】:

很奇怪。我已经实现了许多滑动手势识别器,一切正常。不过,我刚刚添加了一个点击手势识别器,当我运行模拟器并单击时,我没有任何效果。在下面的代码中, [self doMethod] 永远不会触发。我在 viewDidLoad 中为我的控制器设置了所有手势识别器。我正在使用 UIWebView,所以那里可能有些时髦。有什么想法吗?

我正常设置识别器:

UITapGestureRecognizer *tapper = [[UITapGestureRecognizer alloc]initWithTarget:self        action:@selector(handleTap:)];
[self.view addGestureRecognizer:tapper];

handleTap 方法。

-(IBAction)handleTap:(UITapGestureRecognizer*)sender
    [self doMethod];

【问题讨论】:

我使用 -(void) ,它可以工作。 提示:不要忘记发布tapper 嗯,没有运气将其更改为 -(void)。很好奇。 fyi -- IBAction 是 void 的宏。 XCode/Interface Builder 使用 IBAction 来标记可以连接控制事件的方法。 【参考方案1】:

这应该可以工作

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

UIWebView 有自己的手势识别器

这告诉 UIWebView 我们将使用额外的手势识别器

【讨论】:

【参考方案2】:

我不能 100% 确定 UITapGestureRecognizer 的“numberOfTapsRequired”和“numberOfTouchesRequired”属性的默认值是什么,但您可能想尝试初始化它们,看看是否能启动它。此外,如果您的 UIWebView 覆盖整个视图,则底部视图可能永远不会接收到触摸(同样,不是 100% 肯定)。您可以尝试将识别器添加到 webview。

【讨论】:

很奇怪。我正在研究与一种在网络视图上“弹出”的视图无关的东西。我让它设置了底层 web 视图的 [setUserInterActionEnabled: NO],当我这样做时,点击屏幕,handleTap 函数启动。看起来 web 视图忽略点击但不滑动。可能是为了保持链接等正常运行? 听起来就像您的识别器已添加到弹出的视图中。我目前正在开发一个项目,其中点击和滑动识别器都直接添加到 web 视图中(如 [webview addGestureRecognizer: tapper]),它们似乎每次都有效。 嗯,我会继续探索。点击识别器不会添加到弹出视图中。它仅在您在边界之外的较大区域中点击时才有效。但是,更大区域中的其他交互(链接等)仍然被禁用。

以上是关于iOS UITapGestureRecognizer 啥都不做?的主要内容,如果未能解决你的问题,请参考以下文章

{python之IO多路复用} IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO

IO模型--阻塞IO,非阻塞IO,IO多路复用,异步IO

IO复用阻塞IO非阻塞IO同步IO异步IO

四种IO模型‘阻塞IO/非阻塞IO/信号驱动IO/异步IO‘

5种IO模型阻塞IO和非阻塞IO同步IO和异步IO

网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO