将UIPinchGestureRecognizer限制为仅使用两个手指

时间:2017-10-23 15:45:42

标签: ios objective-c uipinchgesturerecognizer

我在文档中找不到如何指定UIPinchGestureRecognizer或UIRotationGestureRecognizer的触摸次数的方法。 我在任何地方找到的只是它只能用两个手指,但通过我的实验,它也适用于3个甚至更多的手指。 此外,在动作中,属性numberOfTouches也永远不会返回实际的手指数。 我想限制它只用于两个手指因为它与其他3指识别器混淆。 请你帮我一个好方法吗?感谢。

2 个答案:

答案 0 :(得分:1)

根据docs UIPinchGestureRecognizer句柄

  

[...]捏手势涉及两次触摸[...]

显然它只考虑两次触摸但允许同时发生额外触摸。

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

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

答案 1 :(得分:1)

将代表添加到您关注的捏合手势识别器中。

实施gestureRecognizer(_:, shouldRecognizeSimultaneouslyWith:)并返回false如果您希望在还有其他识别器正在进行时忽略捏合手势。