有没有办法在不使用选择器的情况下响应UIButton tap?
问题描述:
的标准方法以一个UIButton抽头响应,是:有没有办法在不使用选择器的情况下响应UIButton tap?
- 静态链接的方法和轻敲事件与
IBAction
。 - 使用
UITapGestureRecognizer
,指定target
和action
(选择器)。
我想要的事件处理程序是迅速block
/closure
,他们更灵活(无特定目标/行动),并允许重新配置。
有没有办法做到这一点没有跳过目标/行动的篮球?
顺便说一下,我使用了Swift 3。
而且我看了这个问题,它采用了私有方法: Gesture Recognizers and Blocks
答
你可以创建自己的按钮子类,环绕封闭基于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")
}
谢谢。我想我没有用正确的关键字搜索,所以SO应该支持语义关键字匹配... – NeoWang