首页 > 解决方案 > 快速避免在 UIPinchGestureRecognizer 中捏三指

问题描述

根据苹果文档,捏是一个连续的手势,意味着用两根手指使用。即使用三个手指捏它似乎在 swift 4.1 中也能正常工作。

我试图打印触摸次数。即使用三根手指,它的触摸次数也为 2。它似乎检测到前 2 次手指触摸并忽略第三次。因此无法过滤。

@objc func pinch(pinchGesture: UIPinchGestureRecognizer){
  if pinchGesture.state == UIGestureRecognizerState.began {
    print("number of touches:\(pinchGesture.numberOfTouches)")
  }
}

我在 viewDidLoad 中调用 setupGesture() 方法。所以它处理相关的用户捏手势。

func setupGestures(){

        let pinch = UIPinchGestureRecognizer(target: self, action: #selector(self.pinch))
        pinch.delegate = self
        self.addGestureRecognizer(pinch)

    }

有什么方法可以避免在 ios 中夹住三指?

标签: iosswiftuipinchgesturerecognizer

解决方案


您可以过滤触摸:

func touchesBegan(_ touches: Set<UITouch>, 
         with event: UIEvent)

例如,从参数中获取触摸次数,touches如果touches.count > 2然后不对该手势采取行动 - 忽略它。

编辑(1):

在你的编辑之后,我有了另一个想法(我没有 Mac,所以我现在不能尝试这个)。尝试从委托中使用此方法。在接受之前,您应该能够取得联系。如果这将被调用一次,或者每次触摸(每个手指)调用一次,我看不到信息。也许你可以以某种方式使用它?


推荐阅读