为什么默认情况下UIPanGestureRecognizer不将UISwipeGestureRecognizer静音,而UITapGestureRecognizer则不相互静音?

时间:2019-01-28 14:11:56

标签: ios swift uikit uigesturerecognizer

在文档Coordinating Multiple Gesture Recognizers中,它说:

  

UIKit通常一次只能识别一个手势   一个视图。 ...例如,在同时包含平移和滑动手势识别器的视图中,永远不会识别滑动

话虽如此,也有一些例外。例如,在具有两个UITapGestureRecognizer的视图中,both will get fired的动作。

有一种UIGestureRecognizerDelegate方法gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)在外部使用。但是系统内置的手势识别器(例如UITapGestureRecognizer)如何在内部 决定是否与其他识别器配合使用?或者,在行为方面,连续手势识别器离散手势识别器之间是否有区别?

1 个答案:

答案 0 :(得分:0)

在决策过程中,UIGestureRecognizer有两种有趣的方法,其中可以“防止”手势识别器:

通过调试UITapGestureRecognizerUISwipeGestureRecognizerUIPanGestureRecognizer的子类,我发现:

  • “双击”识别器将阻止“单次单击”识别器,但反之则不然
  • 平移识别器将阻止滑动识别器

当有多个手势识别器时,默认情况下,第一个识别其手势的手势会将其他识别器呈现为.failed

这解释了观察到的行为。