在docCoordinating Multiple Gesture Recognizers中,它说:
UIKit通常一次只允许识别一个手势
一个单一的观点。... 例如,在同时包含平移和滑动手势识别器的视图中,无法识别滑动。
尽管如此,也有一些例外。例如,在具有两个UITapGestureRecognizers的视图中,both will get fired的操作。
有一个UIGestureRecognizerDelegate方法gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)在外部起作用。但是,系统内置的手势识别器(如UITapGestureRecognizer)如何在内部决定是否与其他识别器一起工作?或者,连续手势识别器和离散手势识别器在行为方面有什么区别吗?

最佳答案

在决策过程中,有两种有趣的UIGestureRecognizer方法可以“防止”手势识别器:
canPrevent(_:)
canBePrevented(by:)
通过调试UITapGestureRecognizerUISwipeGestureRecognizerUIPanGestureRecognizer的子类,我发现:
“双点击”识别器将阻止“单点击”识别器,但反之亦然
平移识别器将阻止滑动识别器
当存在多个手势识别器时,默认情况下,第一个识别其手势的识别器会将其他识别器呈现为.failed
这解释了观察到的行为。

09-27 00:05