Swift:延迟通知,直到其他通知完成

时间:2018-03-08 10:35:53

标签: swift uitextfield

我创建了类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

1 个答案:

答案 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)