我在几个类似卡片的视图上使用UIPanGestureRecognizer
让用户移动屏幕周围的视图。非常好的是他们可以放下3个手指并同时拾取3张卡片,但是,我的一些功能并不像那样工作。
我想一次只允许1个手势识别器运行。有没有一种首选的方法呢?
我考虑过:
gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
但默认情况下它已经返回“NO”。@synchronized
,还是会有太大的开销?)。感谢。
答案 0 :(得分:2)
最佳做法是使用一个(全局)手势识别器,因为它是hitTest:
卡片的超级视图,用于确定触摸了哪张卡片。它将允许您正确地处理多个触摸。
答案 1 :(得分:1)
将单个UIPanGestureRecognizer放在所有卡片的公共超级视图上,然后点击检测以在手势开始时找到有问题的卡片。这样你只有一个手势识别器,所以一次只能运行一个手势。
编辑:顺便说一句,你保持一个伊娃的想法,虽然笨拙,但会有效。 UIGestureRecognizer是UIKit的一部分,只在主线程上运行,因此您不必担心多线程访问。但就像我说的那样,它很笨拙。使用单个“主”UIGestureRecognizer更清晰。