限制 UIPinchGestureRecognizer 只能使用两个手指

limit UIPinchGestureRecognizer to work with exactly two fingers only

我在文档中找不到关于如何为 UIPinchGestureRecognizer 或 UIRotationGestureRecognizer 指定触摸次数的方法。 我在任何地方都发现它只适用于两根手指,但根据我的实验,它也适用于 3 根或更多手指。 此外,在动作中 属性 numberOfTouches 也永远不会 returns 手指的实际数量。 我只想将它限制为两根手指,因为它会与其他三指识别器混淆。 你能给我一个好的方法吗?谢谢。

根据docsUIPinchGestureRecognizer处理

[...] pinching gestures involving two touches [...]

显然它只考虑两次触摸,但允许同时发生其他触摸。

回答你的问题:你可以尝试通过其他方式获取实际的触摸次数,并在该计数大于 2 时阻止捏合操作。一种方法是添加更多手势识别器来处理相同的手势视图(例如多个 UITapGestureRecognizers,每个可能的触摸次数一个);另一个是覆盖安装了手势识别器的视图的 touchesBegantouchesMoved,并使用提供的 touches 数组的计数。

(我首先采用第二种方法,因为并行管理多个手势识别器可能会出现问题。)

向您关注的捏合手势识别器添加委托。

如果您希望在还有另一个识别器正在进行时忽略捏合手势,请实施 gestureRecognizer(_:, shouldRecognizeSimultaneouslyWith:) 和 return false