响应UIButton点击的标准方法是:
IBAction
静态链接方法和点击事件。UITapGestureRecognizer
,指定target
和action
(选择器)。我希望事件处理程序快速block
/ closure
,它们更灵活(没有特定的目标/操作),并允许重新配置。
有没有办法在不跳过目标/行动的环节的情况下做到这一点?
顺便说一句,我正在使用Swift 3。
我已阅读此问题,该问题使用私有方法: Gesture Recognizers and Blocks
答案 0 :(得分:3)
您可以创建自己的按钮子类,它将选择器语法包装在基于闭包的API周围。
class MyButton: UIButton {
var action: (() -> ())?
override init(frame: CGRect) {
super.init(frame: frame)
sharedInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
sharedInit()
}
private func sharedInit() {
addTarget(self, action: #selector(touchUpInside), for: .touchUpInside)
}
@objc private func touchUpInside() {
action?()
}
}
然后要向按钮添加动作,您只需设置闭包。
let button = MyButton()
button.action = {
print("hello")
}