Swift 中的 UITapGestureRecognizer 无法在 UIView 上工作
UITapGestureRecognizer not working on UIView in Swift
private let myView: UIView = {
let view = UIView()
view.backgroundColor = .color(fromHexString: "EDF1F4")
view.layer.cornerRadius = 15
view.layer.masksToBounds = true
view.layer.borderWidth = 2
view.layer.borderColor = UIColor.color(fromHexString: "FFFFFF").cgColor
// click event
let tap = UITapGestureRecognizer(target: self, action: #selector(myViewTapped))
tap.numberOfTapsRequired = 1
view.isUserInteractionEnabled = true
view.addGestureRecognizer(tap)
return view
}()
如您所见,我添加了背景颜色,因此背景不透明,而且我还添加了 isUserInteractionEnabled = true
但这不起作用。
上面第一行代码的问题。我的意思是声明 myView。
使用 private lazy var myView: UIView = { ... }
而不是使用 private let myView: UIView = { ... }
将解决问题。
我遇到过这个问题,所以我想其他人可能也会遇到同样的问题。所以我post这个。
谢谢
private let myView: UIView = {
let view = UIView()
view.backgroundColor = .color(fromHexString: "EDF1F4")
view.layer.cornerRadius = 15
view.layer.masksToBounds = true
view.layer.borderWidth = 2
view.layer.borderColor = UIColor.color(fromHexString: "FFFFFF").cgColor
// click event
let tap = UITapGestureRecognizer(target: self, action: #selector(myViewTapped))
tap.numberOfTapsRequired = 1
view.isUserInteractionEnabled = true
view.addGestureRecognizer(tap)
return view
}()
如您所见,我添加了背景颜色,因此背景不透明,而且我还添加了 isUserInteractionEnabled = true
但这不起作用。
上面第一行代码的问题。我的意思是声明 myView。
使用 private lazy var myView: UIView = { ... }
而不是使用 private let myView: UIView = { ... }
将解决问题。
我遇到过这个问题,所以我想其他人可能也会遇到同样的问题。所以我post这个。 谢谢