我试图禁用我添加到视图中的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
}
}
谢谢!
您应该将name属性指定给手势识别器。
tap.name = "myTapGesture"
之后你可以循环使用recozniers,只能禁用你想要的那个。
for aRecognizer in view.gestureRecognizers {
if let name = aRecognizer.name {
if name == "myTapGesture" {
aRecognizer.isEnabled = false
}
}
}
希望这可以帮到你!
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)
}
UITapGestureRecognisers
,然后按name
过滤结果。
func disableTapGesture(from view: UIView) {
view.gestureRecognizers?.filter({$0.name == tapName}).first?.isEnabled = false
}