如何禁用多个手势识别器之一?

How to disable one of multiple gesture recognizers?

我正在尝试禁用已添加到视图的 3 个手势识别器中的 1 个,有人知道正确的代码是什么吗?

这是我目前的情况:

// the gesture recognizer i'm trying to disable

    let tap = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)))
    myImageView1.addGestureRecognizer(tap)


// the code to disable it

    let allGRs = [currentView.gestureRecognizers]

    for g in allGRs {

        if let g as? UITapGestureRecognizer {
            g.isEnabled = false
        }

    }

谢谢!

希望对您有所帮助!

  1. 为您的 UITapGestureRecogniser

    添加唯一名称
    let tapName = "100" //Any unique name
    func addGestureRecognisers() {
        let view = UIView() // Your view in your context. I just added to test my code
        let tap = UITapGestureRecognizer(target: self, action: action: #selector(self.handleTap(_:)))
        tap.name = tapName 
        view.addGestureRecognizer(tap)
    }
    
  2. 过滤UITapGestureRecognisers,然后按name过滤结果。

    func disableTapGesture(from view: UIView) {
        view.gestureRecognizers?.filter({[=11=].name == tapName}).first?.isEnabled = false
    }
    

您应该将名称 属性 分配给您的手势识别器。

tap.name = "myTapGesture"

稍后你可以循环浏览 recozniers,只禁用你想要的那个。

for aRecognizer in view.gestureRecognizers {
   if let name = aRecognizer.name {
       if name == "myTapGesture" {
           aRecognizer.isEnabled = false
       }
   }
}