2017-10-04 97 views
0

的标准方法以一个UIButton抽头响应,是:有没有办法在不使用选择器的情况下响应UIButton tap?

  1. 静态链接的方法和轻敲事件与IBAction
  2. 使用UITapGestureRecognizer,指定targetaction(选择器)。

我想要的事件处理程序是迅速block/closure,他们更灵活(无特定目标/行动),并允许重新配置。

有没有办法做到这一点没有跳过目标/行动的篮球?

顺便说一下,我使用了Swift 3。

而且我看了这个问题,它采用了私有方法: Gesture Recognizers and Blocks

+0

谢谢。我想我没有用正确的关键字搜索,所以SO应该支持语义关键字匹配... – NeoWang

回答

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") 
} 
相关问题