限制 UIPinchGestureRecognizer 只能使用两个手指
limit UIPinchGestureRecognizer to work with exactly two fingers only
我在文档中找不到关于如何为 UIPinchGestureRecognizer 或 UIRotationGestureRecognizer 指定触摸次数的方法。
我在任何地方都发现它只适用于两根手指,但根据我的实验,它也适用于 3 根或更多手指。
此外,在动作中 属性 numberOfTouches 也永远不会 returns 手指的实际数量。
我只想将它限制为两根手指,因为它会与其他三指识别器混淆。
你能给我一个好的方法吗?谢谢。
根据docsUIPinchGestureRecognizer
处理
[...] pinching gestures involving two touches [...]
显然它只考虑两次触摸,但允许同时发生其他触摸。
回答你的问题:你可以尝试通过其他方式获取实际的触摸次数,并在该计数大于 2 时阻止捏合操作。一种方法是添加更多手势识别器来处理相同的手势视图(例如多个 UITapGestureRecognizer
s,每个可能的触摸次数一个);另一个是覆盖安装了手势识别器的视图的 touchesBegan
和 touchesMoved
,并使用提供的 touches
数组的计数。
(我首先采用第二种方法,因为并行管理多个手势识别器可能会出现问题。)
向您关注的捏合手势识别器添加委托。
如果您希望在还有另一个识别器正在进行时忽略捏合手势,请实施 gestureRecognizer(_:, shouldRecognizeSimultaneouslyWith:)
和 return false
。
我在文档中找不到关于如何为 UIPinchGestureRecognizer 或 UIRotationGestureRecognizer 指定触摸次数的方法。 我在任何地方都发现它只适用于两根手指,但根据我的实验,它也适用于 3 根或更多手指。 此外,在动作中 属性 numberOfTouches 也永远不会 returns 手指的实际数量。 我只想将它限制为两根手指,因为它会与其他三指识别器混淆。 你能给我一个好的方法吗?谢谢。
根据docsUIPinchGestureRecognizer
处理
[...] pinching gestures involving two touches [...]
显然它只考虑两次触摸,但允许同时发生其他触摸。
回答你的问题:你可以尝试通过其他方式获取实际的触摸次数,并在该计数大于 2 时阻止捏合操作。一种方法是添加更多手势识别器来处理相同的手势视图(例如多个 UITapGestureRecognizer
s,每个可能的触摸次数一个);另一个是覆盖安装了手势识别器的视图的 touchesBegan
和 touchesMoved
,并使用提供的 touches
数组的计数。
(我首先采用第二种方法,因为并行管理多个手势识别器可能会出现问题。)
向您关注的捏合手势识别器添加委托。
如果您希望在还有另一个识别器正在进行时忽略捏合手势,请实施 gestureRecognizer(_:, shouldRecognizeSimultaneouslyWith:)
和 return false
。