我有个班,
Listner
以下内容:
class Listner {
typealias ListenerType = () -> ()
var listeners: [ListenerType] = []
init<V: UIControl>(view: V, event: UIControlEvents, listener: @escaping ListenerType) {
print("Init") // Prints
view.addTarget(self, action: #selector(actionEvent), for: event)
self.listeners.append(listener)
}
@objc private func actionEvent() {
print("EventChanged") // Does not print
self.listeners.forEach { (listner) in
listner()
}
}
}
从一个角度来看
UIControl
并添加一个目标。我知道目标添加成功,因为当我打印
view.allTargets
我可以看到刚刚添加的目标。
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
Listner(view: textField, event: .editingChanged) {
print("listen")
}
}
当我像上面那样调用类并输入文本字段时,
actionEvent()
从未打过电话。