首页 > 解决方案 > UITapGesture 在 Popup 类上无法按预期工作

问题描述

我创建了一个Popup class在我的应用程序中使用,并且我想UITapGestureRecognizer在黑色层不透明度中添加一个,当用户在弹出窗口之外触摸它时会自动关闭。但手势未被识别。我给你看我的代码Popup class

class Popup {

let supView : UIView!
let blackVoile = UIView()

init(superView viewToInsert : UIView){

    self.supView = viewToInsert

    build()
}

private func build(){
    blackVoile.frame = supView.bounds
    blackVoile.layer.backgroundColor = UIColor.black.cgColor

    blackVoile.isUserInteractionEnabled = true
    let closeGesture = UITapGestureRecognizer(target: self, action: #selector(self.close))
    blackVoile.addGestureRecognizer(closeGesture)

}


func show(){
    supView.addSubview(blackVoile)
}

@objc func close(){
    print("close function")
    self.blackVoile.removeFromSuperview()
}
}

close func从未被调用。并且上面没有其他覆盖层blackVoile UIView

这是我打电话给我的班级的时候:

let newPopup = Popup(superView : self.view)
newPopup.show()

我是初学者,也许我们不能向没有 UIView 实例的类添加手势?

标签: iosswiftuitapgesturerecognizer

解决方案


你的问题opacity。如果我们对此进行任何opacity处理,zero那么该视图将被视为隐藏。所以,你tapGesture不工作。

更新

var newPopup : Popup!

override func viewDidLoad() {
    super.viewDidLoad()
    newPopup = Popup(superView : self.view)
    newPopup.show()
}

推荐阅读