Событие с нажатой клавишей в UITextField - PullRequest
3 голосов
/ 24 октября 2011

У меня есть 10 текстовых полей, в которые я могу ввести только один символ в каждом текстовом поле.После того, как символ введен в каждое текстовое поле, фокус должен перейти к следующему.Точно так же, когда я удаляю символ из текстового поля, нажимая клавишу Backspace или удаляя, мне нужно переместить фокус на предыдущее текстовое поле.Если бы я мог получить событие нажатия клавиш, я мог бы это сделать.Сейчас я не могу найти примеры событий, нажатых клавишами.

Ответы [ 5 ]

8 голосов
/ 24 октября 2011

Реализация UITextFieldDelegate .

Реализация методов делегата в протоколе.Вы можете достичь желаемого.

Вы можете установить фокус, используя метод becomeFirstResponder для нужного текстового поля.

Взгляните на метод делегата

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

Текстовое поле вызывает этот метод всякий раз, когда пользователь вводит новый символ в текстовое поле или удаляет существующий символ.

Так что это может решить вашу проблему.

4 голосов
/ 06 декабря 2013

Основываясь на ответе Адхиры, но с учетом комментария Кирка Волля, вы можете сгенерировать, какой будет последний текст, используя stringByReplacingCharactersInRange:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
  NSString *value = [textField.text stringByReplacingCharactersInRange:range withString:string];
  NSLog(@"value: %@", value);
  return YES;
}
0 голосов
/ 24 октября 2011

Вы должны использовать textfieldDelegate методы.

В вашем textFieldShouldReturn методе вы должны настроить респондентов как

if (textfield == textField1)
{
    [textField2 becomeFirstResponder];
}
else if (textField == textField2)
{
    [textField3 becomeFirstResponder];
}
else
{
    [textField3 resignFirstResponder];
}

return YES; // as method return type is BOOL.
0 голосов
/ 24 октября 2011

вы должны внедрить протокол UITextFieldDelegate в ваш код, и этот метод сообщит вам, когда вы начнете редактировать текстовое поле

- textFieldShouldBeginEditing:

и выможете установить условие if в этом методе согласно вашему требованию ...

0 голосов
/ 24 октября 2011

Просто чтобы дать вам указания:

  1. Назначить тег каждому текстовому полю.
  2. Реализация UITextFieldDelegate . Есть все методы, необходимые для обнаружения любого события, которое происходит внутри текстового поля. В каждом методе вы можете проверить метку и правильно переместить фокус.

Подсказка: вы можете использовать [mainView viewWithTag:XX], чтобы быстро выбрать нужное текстовое поле.

Каждый раз, когда текст изменяется, вы можете проверить текстовое свойство текстового поля, и оно даст вам ответ, какая кнопка была нажата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...