измените свойство UITextField.text напрямую, UITextFieldDelegate не будет запускаться - PullRequest
1 голос
/ 10 января 2011

Если вы отредактируете свойство UITextField.text напрямую, UITextFieldDelegate не сработает.Есть ли правильный способ использования UITextField с пользовательским представлением ввода?Я создал свой собственный viewcontroller с цифровой панелью и могу изменить UITextField.text, но не могу получить местоположение курсора, если не получаю события от UITextFieldDelegate.shouldChangeCharactersInRange.

Любая идея о том, как правильно использоватьпользовательский ввод с UITextField?

Ответы [ 2 ]

0 голосов
/ 28 июля 2011

Я также создал пользовательскую цифровую клавиатуру для нашего приложения. Вы правы, что shouldChangeCharactersInRange не реагирует на программные изменения текста (через setText). Мы используем событие UIControlEventEditingChanged в текстовом поле:

[aField addTarget:self action:@selector(editingChanged:) forControlEvents:UIControlEventEditingChanged];

К сожалению, в настоящее время не может получить доступ к позиции курсора UITextField за пределами shouldChangeCharactersInRange. Вы можете вставить текст в курсор, используя этот метод вставки . Что касается пользовательского ключа удаления, то сейчас мы используем правило «всегда удалять последний символ в поле».

0 голосов
/ 01 февраля 2011

, пожалуйста, убедитесь, что

yourTextField.delegate = self

эта строка в вашем файле реализации

...