UITapGesture 在 Popup 上没有按预期工作 class
UITapGesture doesn't work as expected on Popup class
我创建了一个要在我的应用程序中使用的 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
上面没有其他覆盖层
这是我打电话给 class 的时候:
let newPopup = Popup(superView : self.view)
newPopup.show()
我是初学者,也许我们不能向没有 UIView 实例的 class 添加手势?
您的 opacity
有问题。如果我们将任何 opacity
设置为 zero
,那么该视图将被视为隐藏视图。所以,你的 tapGesture
不工作。
更新
var newPopup : Popup!
override func viewDidLoad() {
super.viewDidLoad()
newPopup = Popup(superView : self.view)
newPopup.show()
}
您的 supView
也需要启用 userInteraction。
我创建了一个要在我的应用程序中使用的 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
这是我打电话给 class 的时候:
let newPopup = Popup(superView : self.view)
newPopup.show()
我是初学者,也许我们不能向没有 UIView 实例的 class 添加手势?
您的 opacity
有问题。如果我们将任何 opacity
设置为 zero
,那么该视图将被视为隐藏视图。所以,你的 tapGesture
不工作。
更新
var newPopup : Popup!
override func viewDidLoad() {
super.viewDidLoad()
newPopup = Popup(superView : self.view)
newPopup.show()
}
您的 supView
也需要启用 userInteraction。