我创建了一个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实例的类添加手势?
感谢您的帮助。
答案 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。