Более подробно о ответе Бена Готлиба, приведенном выше, использование textField shouldChangeCharactersInRange - это здорово, но имеет тот недостаток, что некоторые вещи могут происходить с задержкой в один символ.
Например, вызов нижеприведенного сообщения для предупреждения о том, что на самом деле нет текста, вызывается символом после того, как вы введете символ, и он больше не будет пустым.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (!textField.text.length) {
// Do something with empty textfield
}
return YES;
}
Приведенный ниже метод позволяет вам получить элементарные изменения, происходящие в вашем textField. Хотя он и не такой прямой, как NSNotification, он все же позволяет вам использовать аналогичные методы с различными textFields и поэтому довольно полезен при попытке получить определенные изменения символов в вашем текстовом поле.
Приведенный ниже код исправляет задержку символа
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
// This means it updates the name immediately
NSString * newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
textField.placeholder = newString.length ? @"" : @"Name";
return YES;
}
Для этого кода используется для добавления заполнителя в UITextField, когда в textField нет текста