Я хотел бы знать, когда мое приложение очистит свойство textTextField, которое является подклассом UITextField. Поскольку у меня много текстовых полей в моем приложении, я бы хотел, чтобы это был механизм из подкласса.Обнаружить, когда UITextField изменен не с помощью клавиатуры swift
Я нашел сообщения, которые предлагают использовать наблюдателя, и я попробовал его, и он работает, но мне бы хотелось, чтобы это было лучше.
Проблема этого метода состоит в том, что, когда я вхожу один символ с помощью клавиатуры, а затем очистить «Текст» из моего приложения с помощью
someField.text = ""
наблюдатель называет мое приложение в 50 раз, что очень неэффективен.
Вот код, который я использую в MyTextField классе:
addObserver(self, forKeyPath: "text", options: .New, context: nil)
и функция, которая получает сообщение
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if let newValue = change?[NSKeyValueChangeNewKey] {
print("text changed: \(newValue)")
}
}
Печать() вызывается более чем в 50 раз с «NEWVALUE» будучи пустым ech time. Кроме того, другие текстовые поля, которые не имеют данных в свойстве «text», вызываются 5 раз, когда я устанавливаю свое свойство «text» в «» из моего приложения, что также неэффективно.