Очистить UITextField при нажатии стандартной цифровой клавиатуры - PullRequest
0 голосов
/ 18 мая 2010

Извините, если я не достаточно хорошо объяснил свою проблему в названии.

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

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

Так, например:

  • Пользователь вводит «6» -> Номер 6 отображается в UITextField
  • Пользователь выбирает «+» -> UITextField очищается, чтобы освободить место для следующего номера
  • Пользователь вводит "10" -> Номер 10 отображается в UITextField
  • Пользователь выбирает «+» -> 16 отображается как результат предыдущей операции и должен оставаться там до тех пор, пока не будет нажата другая цифра (он хочет продолжить добавление дополнительных чисел)

  • Пользователь вводит "5"

В этот момент, если бы я использовал пользовательскую клавиатуру, я мог бы очистить UITextField, как только пользователь нажмет кнопку «5», но я не могу понять, как это сделать при использовании стандартной цифровой клавиатуры. Итак, результат, который я получаю на данный момент - «165».

Есть ли способ определить, когда клавиша нажата на стандартной цифровой клавиатуре, чтобы я мог очистить UITextField до появления нового номера? Я думал, что для этого может быть NSNotification, но я не смог его найти.

Я знаю, что мог бы решить мою проблему, если бы создал пользовательскую клавиатуру или использовал два отдельных UITextFields (одно для операций и другое для общего), но я хотел бы использовать стандартную цифровую клавиатуру, если это возможно.

Большое спасибо!

1 Ответ

1 голос
/ 18 мая 2010

Установите делегат для UITextField и используйте shouldChangeCharactersInRange: replaceString:

Это будет захватывать каждое нажатие клавиши, что позволит вам делать то, что вы хотите. См

http://developer.apple.com/iphone/library/documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html#//apple_ref/occ/intfm/UITextFieldDelegate/textField:shouldChangeCharactersInRange:replacementString:

Если я правильно вас понял, это должно охватить вас.

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