在docCoordinating Multiple Gesture Recognizers中,它说:
UIKit通常一次只允许识别一个手势
一个单一的观点。... 例如,在同时包含平移和滑动手势识别器的视图中,无法识别滑动。
尽管如此,也有一些例外。例如,在具有两个UITapGestureRecognizer
s的视图中,both will get fired的操作。
有一个UIGestureRecognizerDelegate
方法gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)
在外部起作用。但是,系统内置的手势识别器(如UITapGestureRecognizer
)如何在内部决定是否与其他识别器一起工作?或者,连续手势识别器和离散手势识别器在行为方面有什么区别吗?
最佳答案
在决策过程中,有两种有趣的UIGestureRecognizer
方法可以“防止”手势识别器:canPrevent(_:)
canBePrevented(by:)
通过调试UITapGestureRecognizer
、UISwipeGestureRecognizer
和UIPanGestureRecognizer
的子类,我发现:
“双点击”识别器将阻止“单点击”识别器,但反之亦然
平移识别器将阻止滑动识别器
当存在多个手势识别器时,默认情况下,第一个识别其手势的识别器会将其他识别器呈现为.failed
。
这解释了观察到的行为。