UITextView: как программно установить selectedRange и статьFirstResponder?

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

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

Проблемы...

  1. Установщик textview.selectedRange, похоже, действует только при вызове из viewDidAppear.

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

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

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


person strawtarget    schedule 03.06.2010    source источник


Ответы (1)


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

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

person Chris Garrett    schedule 04.06.2010