我在考虑按钮点击事件,我们有不同的选择
- UITapGestureRecognizer
- addTarget
- addAction
对于一个基本操作,比如说
button.addTarget(self, action: #selector(buttonClicked), for: .touchUpInside)
@objc private func buttonClicked () {
print("button clicked")
}
不过,我们可以使用以下方法而无需通过objc函数或选择器执行相同的操作:
extension UIControl {
func addAction(for controlEvents: UIControl.Event = .touchUpInside, _ closure: @escaping()->()) {
addAction(UIAction { (action: UIAction) in closure() }, for: controlEvents)
}
}
button.addAction(for: .touchUpInside) { [weak self] in
guard let self = self else {return}
self.buttonClicked()
}
func settingsClicked () {
print("settings clicked")
}
我查看了苹果的addAction文档,没有找到太多信息,想知道两者之间的区别以及应该更多使用哪一个。
iOS 14+
的addAction
使用方式。addTarget(_:action:for:)
是旧的方法。除了只适用于 14+ 版本之外,target
参数非常重要。如果你想让另一个对象处理它,这样更容易,对吧?你仍然可以将其添加到addAction()
的闭包中。 - undefined