如果我们设置手势识别器依赖 A 要求 B 失败,是否意味着识别器 A 在 B 失败之前不会接收事件?
If we set gesture recognizer dependency A require failure of B, does it mean recognizer A won't receive event before B fail?
https://developer.apple.com/documentation/uikit/uigesturerecognizerdelegate/1624229-gesturerecognizer
例如,如果我设置手势识别器的委托 A
和 return true
当 otherGestureRecognizer
是手势识别器 B
.
optional func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,
shouldRequireFailureOf otherGestureRecognizer: UIGestureRecognizer) -> Bool
这是否意味着手势识别器 A
甚至不会接收 touchBegan
、touchMoved
或 touchEnded
等事件,直到识别器 B
失败?或者它仍然会正常运行,只是A的recognized
的结果仅在B
失败时传递?
即使一个手势识别器要求另一个手势识别器失败,它仍可能在识别手势之前接收到触摸事件(例如 touchesBegan
、touchesMoved
等)。
话虽如此,手势识别器的想法是将我们从这些预先识别的触摸事件中抽象出来。大多数时候,我们使用现有的、具体的手势识别器(例如 UITapGestureRecognizer
、UILongPressGestureRecognizer
等)。因此,我们通常不处理底层触摸事件,而是为识别手势后将调用的方法指定一个 target/selector(或在 IB 中连接一个 @IBAction
)。只有在手势被识别后才会调用适当的动作方法,这意味着只会识别一个手势识别器。例如,如果 A 要求 B 失败,那么您将看到调用 A 的操作或 B 的操作,但不会同时看到两者。
因此,如果实现我们自己的自定义手势识别器,我们将处理触摸事件(包括在识别手势之前),但通常我们只会使用手势识别器的动作,并且会看到一个或另一个。
不用说,您可以选择指定可以识别同步手势,而不是要求一个失败,gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)
。因此,根据您的应用程序的需要,可以有任何一种行为。
https://developer.apple.com/documentation/uikit/uigesturerecognizerdelegate/1624229-gesturerecognizer
例如,如果我设置手势识别器的委托 A
和 return true
当 otherGestureRecognizer
是手势识别器 B
.
optional func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,
shouldRequireFailureOf otherGestureRecognizer: UIGestureRecognizer) -> Bool
这是否意味着手势识别器 A
甚至不会接收 touchBegan
、touchMoved
或 touchEnded
等事件,直到识别器 B
失败?或者它仍然会正常运行,只是A的recognized
的结果仅在B
失败时传递?
即使一个手势识别器要求另一个手势识别器失败,它仍可能在识别手势之前接收到触摸事件(例如 touchesBegan
、touchesMoved
等)。
话虽如此,手势识别器的想法是将我们从这些预先识别的触摸事件中抽象出来。大多数时候,我们使用现有的、具体的手势识别器(例如 UITapGestureRecognizer
、UILongPressGestureRecognizer
等)。因此,我们通常不处理底层触摸事件,而是为识别手势后将调用的方法指定一个 target/selector(或在 IB 中连接一个 @IBAction
)。只有在手势被识别后才会调用适当的动作方法,这意味着只会识别一个手势识别器。例如,如果 A 要求 B 失败,那么您将看到调用 A 的操作或 B 的操作,但不会同时看到两者。
因此,如果实现我们自己的自定义手势识别器,我们将处理触摸事件(包括在识别手势之前),但通常我们只会使用手势识别器的动作,并且会看到一个或另一个。
不用说,您可以选择指定可以识别同步手势,而不是要求一个失败,gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)
。因此,根据您的应用程序的需要,可以有任何一种行为。