为啥以及如何 UIPanGestureRecognizer 使 UISwipeGestureRecognizer 静音,而 UITapGestureRecognizers 默认情况下不相互静音?
Posted
技术标签:
【中文标题】为啥以及如何 UIPanGestureRecognizer 使 UISwipeGestureRecognizer 静音,而 UITapGestureRecognizers 默认情况下不相互静音?【英文标题】: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 通常一次只允许识别一个手势 单一视图。 ...例如,在同时包含平移和滑动手势识别器的视图中,永远不会识别滑动。
话虽如此,但也有一些例外。例如,在有两个UITapGestureRecognizer
s 的视图中,both will get fired 的操作。
UIGestureRecognizerDelegate
方法 gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)
在外部发挥作用。但是系统内置的手势识别器,例如UITapGestureRecognizer
,如何在内部决定是否与其他识别器一起工作?或者,连续手势识别器和离散手势识别器在行为方面有什么区别吗?
【问题讨论】:
嗨!您是否尝试查看使用此委托时的行为:developer.apple.com/documentation/uikit/uigesturerecognizer/…(例如,如果平移失败,请滑动) @RenataFaria 很抱歉一开始没有仔细阅读您的评论!我认为这是代表文档的链接。我认为您建议的方法是答案的关键。谢谢! 【参考方案1】:在决策过程中有两个有趣的UIGestureRecognizer
方法,其中手势识别器可能会被“阻止”:
canPrevent(_:)
canBePrevented(by:)
通过调试UITapGestureRecognizer
、UISwipeGestureRecognizer
和UIPanGestureRecognizer
的子类,我发现:
当有多个手势识别器时,默认情况下,第一个识别其手势的识别器会将其他识别器渲染为.failed
。
这解释了观察到的行为。
【讨论】:
以上是关于为啥以及如何 UIPanGestureRecognizer 使 UISwipeGestureRecognizer 静音,而 UITapGestureRecognizers 默认情况下不相互静音?的主要内容,如果未能解决你的问题,请参考以下文章
TensorFlow:如何以及为啥要使用 SavedModel
为啥 UserManager.CreateIdentityAsync() 正在寻找 IdentityRole 以及如何解决?