Скажем, у меня есть следующий код:
IBOutlet UITextField* nameTextField;
IBOutlet UILabel* greetingLabel;
Я бы хотел, greetingLabel
чтобы он прочитал «Hello [nameTextField]», как только пользователь нажмет любую клавишу.
В основном мне нужен iPhone-эквивалент метода делегата Cocoa controlTextDidChange
.
Метод textField:shouldChangeCharactersInRange:
делегата вызывается каждый раз при нажатии клавиши:
- (BOOL) textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
Строковый аргумент возвращает нажатый символ. Однако фактическое textField
значение ( nameTextField.text
) остается пустым.
Что мне здесь не хватает? (Я хотел бы nameTextField
отразить точную строку, которую пользователь ввел до сих пор).
[textField addTarget:self action:@selector(textFieldEditingChanged:) forControlEvents:UIControlEventEditingChanged]
;).вы можете зарегистрировать действие для события UIControlEventEditingChanges в текстовом поле:
...
источник
UITextField
есть уведомление,UITextFieldTextDidChange
которое будет запускаться каждый раз при изменении текста, если вы для него зарегистрируетесь. Просто зарегистрируйтесь для получения этого уведомления и в методе, вызываемом уведомлением, измените текст метки.Чтобы добавить к этому, объект, переданный вашему обработчику уведомлений, будет иметь текст
UITextField
.Надеюсь, это поможет.
источник