Может ли нажатие следующего текстового поля вызвать то же поведение, что и клавиша «Готово» - PullRequest
0 голосов
/ 20 мая 2010

У меня есть два текстовых поля подряд для имени пользователя и пароля. Когда вы закончите вводить свое имя пользователя, самое естественное, что вам нужно сделать, это просто нажать на следующее текстовое поле, как вы сделали бы это с помощью веб-формы. Но это не работает - вы не можете редактировать следующее поле, пока не нажмете «Готово» на клавиатуре для первого поля, а затем нажмите на второе.

У меня вопрос: возможно ли настроить два текстовых поля, чтобы завершить редактирование первого и начать редактирование второго, когда вы нажмете второе поле?

1 Ответ

0 голосов
/ 20 мая 2010

Вам нужно будет сделать несколько вещей:

  1. Отслеживание активного текстового поля (например, используйте textFieldShouldBeginEditing)

  2. Поймать касания в вашем контроллере вида, и если они не встречаются в активном textField, заставьте активный textField переустанавливатьFirstResponder и иметь новый textField становитьсяFirstResponder.

Следующий код не проверен , но должен быть хорошей отправной точкой. Обратите внимание, что это также приведет к потере фокуса вашим textField, если вы нажмете на что-либо еще, кроме активного textField.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [[event allTouches] anyObject];
    if ([currentTextView isFirstResponder] && [touch view] != currentTextView) {
        [currentTextView resignFirstResponder];
        if ([[touch view] isKindOfClass:[UITextField class]])
            [[touch view] becomeFirstResponder];
    }
    [super touchesBegan:touches withEvent:event];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...