iOS: как отправить ключ в UITextField? - PullRequest
8 голосов
/ 04 мая 2011

Я реализовал пользовательский вид клавиатуры в приложении для iOS. У меня есть несколько UITextFields, которые используют эту клавиатуру. Некоторые из этих UITextFields имеют делегатов, которые переопределяют shouldChangeCharactersInRange. Однако, если моя клавиатура просто устанавливает текстовое значение в текстовом поле, сообщение shouldChangeCharactersInRange не отправляется. Я думаю, что мне нужно сделать что-то вроде SendKey и отправить код ключа в UITextField.

Есть предложения?

Ответы [ 2 ]

5 голосов
/ 10 февраля 2012

Как я отмечаю в своем ответе здесь , UITextField соответствует протоколу UITextInput. Итак, вы называете его методы:

[textField replaceRange:textField.selectedTextRange withText:text];

Интересно: "" выполнит возврат и, конечно, " " сделает пробел.

Это должно вызвать метод shouldChangeCharactersInRange автоматически. Если нет, то вам придется сделать это самостоятельно.

Вам определенно нужно сделать это, если вы собираетесь создать пользовательскую клавиатуру на iOS.

0 голосов
/ 04 мая 2011

Похоже, что клавиатура отвечает за отправку сообщения shouldChangeCharactersInRange на сам UITextField, а не просто устанавливает его значение.Пусть ваша клавиатура вычислит значения range и string и вызовет:

if ([[theTextField delegate] textField:theTextField shouldChangeCharactersInRange:range replacementString:string])
    theTextField.text = [theTextField.text stringByReplacingCharactersInRange:range withString:string];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...