【问题标题】:Why and how does UIPanGestureRecognizer mute UISwipeGestureRecognizer while UITapGestureRecognizers don't mute each other by default?为什么以及如何 UIPanGestureRecognizer 使 UISwipeGestureRecognizer 静音,而 UITapGestureRecognizers 默认情况下不相互静音?
【发布时间】:2019-01-28 14:11:56
【问题描述】:

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

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

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

UIGestureRecognizerDelegate 方法 gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)外部发挥作用。但是系统内置的手势识别器,例如UITapGestureRecognizer,如何在内部决定是否与其他识别器一起工作?或者,连续手势识别器离散手势识别器在行为方面有什么区别吗?

【问题讨论】:

  • 嗨!您是否尝试查看使用此委托时的行为:developer.apple.com/documentation/uikit/uigesturerecognizer/…(例如,如果平移失败,请滑动)
  • @RenataFaria 很抱歉一开始没有仔细阅读您的评论!我认为这是代表文档的链接。我认为您建议的方法是答案的关键。谢谢!

标签: ios swift uikit uigesturerecognizer


【解决方案1】:

在决策过程中有两个有趣的UIGestureRecognizer方法,其中手势识别器可能会被“阻止”:

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

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

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

这解释了观察到的行为。

【讨论】:

    猜你喜欢
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 2022-01-21
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多