Как я могу обнаружить событие KeyPress в UITextField? - PullRequest
7 голосов
/ 08 ноября 2011

В UITextView есть событие Изменено для обработки нажатия клавиш.Однако у UITextField такого события нет.

Как я могу обнаружить событие KeyPress в UITextField?

Существует метод, описанный здесь с использованием уведомлений, однако проблема в том, что я не могу отказаться отTextFieldTextDidChangeNotification.

Ответы [ 4 ]

3 голосов
/ 08 ноября 2011

Я не уверен, какой у вас вопрос.Первый, на который вы, похоже, ответили сам, т.е. решение (по вашей ссылке) заключается в использовании NSNotificationCenter.DefaultCenter.AddObserver.

Второе - о отписке - если вы хотите прекратить наблюдать за вамидолжен вызвать предыдущий аналог метода, т.е. NSNotificationCenter.DefaultCenter.RemoveObserver.

Просто сохраните объект, возвращенный из AddObserver, чтобы вы могли передать его RemoveObserver.

note: Если я не правильно понял ваш вопрос, пожалуйста, используйте изменить и добавить некоторые детали и / или код того, что вы хотите достичь, и мы сделаем все возможное, чтобы помочь: -)

2 голосов
/ 19 ноября 2013

Как предложил Колинта, сделайте это

- (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;
}

Это также будет работать, если ввод был изменен с помощью предложений правописания.

1 голос
/ 08 ноября 2011

Посмотрите на UITextFieldDelegate

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html

Реализация этого протокола.Он имеет методы обратного вызова для всех изменений текстового поля.

0 голосов
/ 28 сентября 2016

Самый простой способ наблюдать UITextField изменения:

_textField.AddTarget((sender, e) =>
{
    // Do your stuff in here
}, UIControlEvent.EditingChanged);

Вам не нужно подписываться на общесистемный центр уведомлений и не нужно отменять регистрацию наблюдателя при уничтожениитекстовое поле.

Надеюсь, это поможет кому-то в будущем:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...