Возможно, это не ошибка в iOS 4.x. Даже в iOS 9.x такая ситуация все еще существует.
Для японского / китайского или любого другого языка, который может выбирать слова из предложенного списка слов надклавиатуры, этот метод делегата
- (BOOL) textField : (UITextField *) textField shouldChangeCharactersInRange : (NSRange) range replacementString : (NSString *) string
не будет вызван. Текст поля UIText добавляется выбранным словом напрямую.
Обходной путь должен использовать UITextFieldTextDidChangeNotification
:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(checkForTextfield:)
name:UITextFieldTextDidChangeNotification
object:nil];
Уязвимое текстовое поле сохраняется в параметре объекта уведомления.Словарь userInfo не используется.
- (void)checkForTextfield:(NSNotification *)noti{
UITextField* textField = noti.object;
//do whatever you want with the UITextfield
}
И не забудьте удалить себя из NSNotificationCenter
, когда dealloc:
- (void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}