我有一个自定义类Overlay,在其中添加了UIButton。单击该按钮时,应调用一个方法:
class Overlay {
func show(onView view: UIView, frame: CGRect) {
let dismissButton = UIButton()
dismissButton.frame = frame
dismissButton.setTitle("Dismiss", for: .normal)
dismissButton.setTitleColor(Project.Color.failure, for: .normal)
dismissButton.titleLabel?.font = Project.Typography.lightFont.withSize(22)
view.addSubview(dismissButton)
dismissButton.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(dismissBtnTapped(tap:)))
dismissButton.addGestureRecognizer(tap)
}
@objc func dismissBtnTapped(tap: UITapGestureRecognizer) {
print("TEST")
}
我show(...)
在ViewController内部调用,传递其视图和框架。
但是tapGestrueRecognizer无法正常工作。有任何想法吗?
谢谢你。
编辑:我尝试将这段代码直接放在ViewController中。然后就可以了。我不确定为什么,但是不幸的是,这对我来说不是一个可行的解决方案:/
编辑2:这就是我所说的:
let overlay = Overlay()
overlay.show(onView: self.view, frame: CGRect(x: 0, y: 0, width: view.bounds.width, height: 150))
您已经在添加一个按钮,尝试向其添加一个目标而不是一个手势,并使您的叠加变量成为全局变量。
class YourControllerClass: UIViewController {
let overlay = Overlay()
...
func show(onView: UIView, frame: CGRect) {
...
dismissButton.addTarget(self, action: #selector(dismissBtnTapped(_:)), forControlEvents: .TouchUpInside)
}
func dismissBtnTapped(sender:UIButton){
}
}
希望这可以帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句