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