2012-01-14 56 views
1

这是我的iPhone应用程序的UI上的问题,我有一个按钮和另一个接受触摸手势识别器的图像,都有目标动作。如果我一次触摸按钮和视图,一切都很好。但是,如果我同时或连续地触摸这两个,事情就会变得混乱。按钮和手势处理程序操纵相同的状态变量,所以如果它们并排运行,结果是非确定性的。在iOS中,GestureRecogizer目标操作是否在单独的线程中运行?

我试图通过禁用按钮立即解决此问题,我进入手势识别器处理程序,并在退出处理程序之前启用它。但是这并不能解决我的问题!

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

+0

您可以发布任何来自这两个处理程序的代码? – reddersky 2012-01-14 17:23:23

+0

我想出了这个问题:如果我同时点击按钮和图像,禁用按钮不起作用,因为按钮事件在禁用之前会被触发;由于我的手势处理程序使用计时器在1秒后执行某些操作,因此按钮处理程序会在第二秒钟内被调用并导致错误。我最终使用了guard变量来解决这个问题。 但这里的问题仍然有效,有没有人知道手势识别器处理程序是否在与主UI或另一个线程相同的线程中调用。 。 – NeoWang 2012-01-14 17:46:16

+0

它们在主UI线程上调用。 – reddersky 2012-01-14 18:25:09

回答

0

把这个代码实现手势识别的委托类

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

相关问题