Как я могу обнаружить событие нажатия клавиши в UITextField?
В UITextView
есть измененное событие для обработки нажатия клавиши. Однако у UITextField
такого события нет.
Как я могу обнаружить событие нажатия клавиши в UITextField
?
Существует метод, описанный здесь с использованием уведомлений, однако проблема заключается в том, что я не могу отписаться от TextFieldTextDidChangeNotification.
4 ответа:
Я не уверен, что это ваш вопрос. На первый вы, кажется, ответили сами, т. е. решение (из вашей ссылки) заключается в использовании
NSNotificationCenter.DefaultCenter.AddObserver
.Второй - оотмене подписки - Если вы хотите прекратить наблюдение, вам следует вызвать предыдущий метод-аналог, т. е.
Просто сохраните объект, возвращенный изNSNotificationCenter.DefaultCenter.RemoveObserver
.AddObserver
, чтобы вы могли передать его вRemoveObserver
.Примечание: Если я не понял ваш вопрос правильно, пожалуйста, используйте edit и добавьте некоторые детали и / или код того, чего вы хотите достичь, и мы сделаем все возможное, чтобы помочь : -)
Как предложила колинта, сделайте это
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *text = [textField.text stringByReplacingCharactersInRange:range withString:string]; NSLog(@"range = %@, replacement = %@, text = %@", NSStringFromRange(range), string, text); return YES; }
И
- (BOOL)textFieldShouldClear:(UITextField *)textField { NSLog(@"clear text"); return YES; }
Он также будет работать, если входные данные были изменены с помощью предложений по правописанию.
Посмотрите на UITextFieldDelegate
Реализуйте этот протокол. Он имеет методы обратного вызова для всех изменений текстового поля.
Самый чистый способ наблюдать
UITextField
Изменения-это_textField.AddTarget((sender, e) => { // Do your stuff in here }, UIControlEvent.EditingChanged);
Вам не нужно подписываться на общесистемный Центр уведомлений, и вам не нужно отменять регистрацию observer, когда вы уничтожаете текстовое поле.
Надеюсь, что это поможет кому-то в будущем:)