IOS / XCode/ цель C: захват последнего нажатия клавиши в текстовом поле

У меня есть способ включить кнопку сохранения, которую я хочу запустить, когда пользователь удовлетворяет нескольким условиям, например, имя пользователя не менее 4 символов. Чтобы проверить эти условия, мне нужно проверять каждое нажатие клавиши. Какое лучшее событие касания (через раскадровку), чтобы захватить это?

Попробуйте "Редактирование закончилось", но оно не сработает, пока вы не нажмете на текстовое поле. Я бы предпочел, чтобы кнопка была включена, как только в текстовое поле будет введена приемлемая запись Также попробовал наладку внутри и значение изменилось, но ни один, кажется, не работает.

Что является лучшим событием касания, чтобы, как только пользователь вводил четвертый символ, кнопка была включена?

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

- (IBAction)changedText:(id)sender {
    [self updateSaveButton];

-(void) updateSaveButton
{
    NSString *name = self.username.text;
    NSLog(@"update save button called");
    self.submitButton.enabled = (name.length > 3);
}

1 ответ

Решение

Что я делаю, так это назначаю текстовое поле делегатом. В этом случае делегатом будет экземпляр, код класса которого вы указали в своем вопросе.

Делегату отправляется группа сообщений делегата, задокументированных в UITextFieldDelegate. В этом случае я бы использовал textField:shouldChangeCharactersInRange:replacementString:, который срабатывает каждый раз, когда пользователь делает все, что предложено, чтобы изменить текст в поле.

Просто ответьте, как считаете нужным, и верните ДА, чтобы изменения вступили в силу.

В качестве альтернативы вы можете рассматривать текстовое поле как элемент управления (UIControl) и использовать событие элемента управления Изменить измененное текстовое поле, чтобы установить пару целевое действие. Но на практике я всегда использую метод делегата.

Другие вопросы по тегам