我创建了类CurrencyTextField
子类UITextField
它有通知:
NotificationCenter.default.addObserver(self, selector: #selector(self.textDidChange(_:)), name: NSNotification.Name.UITextFieldTextDidChange, object: self)
在ViewController
我有var currencyTextField: CurrencyTextField!
它也有currencyTextField.addTarget(self, action: #selector(priceTextFieldDidChange(_:)), for: .editingChanged)
但CurrencyTextField
中的通知速度低于ViewController
。有没有办法先在CurrencyTextField
电话中发出通知?
我唯一的解决方案是在DispatchQueue.main.asyncAfter
ViewController
答案 0 :(得分:0)
您可以创建新的代理
protocol TextChangeDelegate: class {
func textFieldDidChange(_ textField: TextField)
}
在TextField类中,在textDidChange方法中添加以下行
@objc
private func textDidChange(_ textField: UITextField) {
textChangeDelegate?.textFieldDidChange(self)
}
然后让UIViewController符合TextChangeDelegate并实现
func textFieldDidChange(_ textField: TextField)
而不是使用
currencyTextField.addTarget(self, action: #selector(priceTextFieldDidChange(_:)), for: .editingChanged)