UITextView: Как программно установить selectedRange и статьFirstResponder? - PullRequest
2 голосов
/ 04 июня 2010

У меня есть UITextView, содержащий документ. Если пользователь касается документа, точка вставки (свойство selectedRange) устанавливается соответствующим образом, и UITextView становится первым респондентом (появляется клавиатура). YAY!

Как я могу сделать то же самое программно? Допустим, у меня есть кнопка с заголовком «Изменить на 1000 символов». Я хочу, чтобы для selectedRange было установлено значение [1000, 0], а затем текстовое представление стало первым респондентом.

Проблемы ...

  1. textview.selectedRange setter имеет эффект только при вызове из viewDidAppear.

  2. [textview intoFirstResponder] устанавливает точку вставки в конец документа.

Итак, лучшее, что я могу сделать, - это сначала стать первым ответчиком, а затем установить выбранный диапазон. Пользователь видит вид, прокручивает до конца документа и затем возвращается к нужной точке вставки. Вроде некрасиво.

Стоит ли пытаться скрыть уродство, взламывая флаги 'scrollEnabled' и 'editable' во время перехода? Или есть лучший способ сделать это?

1 Ответ

0 голосов
/ 04 июня 2010

Возможно, вы застряли, делая хак. Как насчет этого:

Скрыть вид, когда вы устанавливаете выбранный диапазон (возможно, помещая другой вид того же размера поверх UITextView), чтобы скрыть некрасивую прокрутку. Затем, когда выбран диапазон, установите отображение в открытом виде, через некоторое время после viewDidAppear.

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