UITapGesture在Popup类上不起作用

时间:2018-08-27 05:38:04

标签: ios swift uitapgesturerecognizer

我创建了一个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实例的类添加手势?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您的opacity有问题。如果我们将opacity设为zero,则该视图将被视为隐藏视图。因此,您的tapGesture无法正常工作。

更新

var newPopup : Popup!

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

答案 1 :(得分:0)

您的supView还需要启用userInteractionEnabled。