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

问题描述 投票:4回答:2

我试图禁用我添加到视图中的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
        }

    }

谢谢!

ios swift uigesturerecognizer
2个回答
0
投票

您应该将name属性指定给手势识别器。

tap.name = "myTapGesture"

之后你可以循环使用recozniers,只能禁用你想要的那个。

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

0
投票

希望这可以帮到你!

  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({$0.name == tapName}).first?.isEnabled = false }
© www.soinside.com 2019 - 2024. All rights reserved.