在使用手势识别器(_:shouldRecognizeSimulouslyWith:)时,我是否需要同时支持这两对识别器



我正在创建一个支持多个手势的视图,在某些情况下,我不希望同时识别两个手势。据我所知,这意味着要覆盖委托中的gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)。代码可能看起来像:

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
if gestureRecognizer == swipeGestureRecognizer && otherGestureRecognizer == panGestureRecognizer {
return false
}
return true
}

我需要同时支持这两对识别器吗?也就是说,基于这个例子,我是否需要为gestureRecognizer == swipeGestureRecognizer && otherGestureRecognizer == panGestureRecognizergestureRecognizer == panGestureRecognizer && otherGestureRecognizer == swipeGestureRecognizer添加if?关于iOS处理多种手势的官方文档尚不清楚。

我使用Xcode 13.2.1、Swift 5和iOS SDK 15.2版(19C51(进行开发。

不一定。在大多数情况下,您甚至可能不需要为两个手势识别器都指定一个代理。

如果两个手势识别器都有代表,则会将此消息发送给他们,以防他们都需要做出决定并对此事有发言权;但如果他们没有,那么要么不要给他们两个委托,要么,如果你给了他们两个授权,不要麻烦在两者中都实现这个方法——除非,正如我所说,他们都有重要的选择要做。

还要注意,false是默认值,因此唯一重要的返回值是true,它会使进程短路。一旦代表为一对返回true,问题就解决了,即使两个手势识别器都有代表,如果第一个返回true,第二个甚至不会为这对查询(相反(。

相关内容

最新更新