在iOS中,GestureRecogizer是否在单独的线程中运行目标操作?

时间:2012-01-14 17:16:45

标签: iphone objective-c ios

问题是,在我的iPhone应用程序的UI上,我有一个按钮和另一个接受Touch手势识别器的imageView,它们都有目标操作。如果我一次触摸按钮和视图,一切都很好。但是,如果我同时触摸这两个,或者快速连续触摸,那么事情就会搞砸了。按钮和手势处理程序操纵相同的状态变量,因此如果它们并排运行,则结果是不确定的。

我尝试通过在进入手势识别器处理程序时禁用按钮并在退出处理程序之前启用它来解决此问题。但这并没有解决我的问题!

所以唯一的可能性(我的猜测)是当按钮处理程序运行时手势识别器被触发。但这只有在它们位于不同的线程中时才会发生。那么有谁知道手势识别器处理程序是否在不同的线程中运行?或者,更具体到我的问题,在我的情况下我该怎么办?使用保护变量来防止冲突?

1 个答案:

答案 0 :(得分:0)

将此代码放在实现手势识别器委托的类中

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