Автоматическая прокрутка в приложении iOS Notepad - PullRequest
0 голосов
/ 29 декабря 2011

Мне интересно узнать об автоматической прокрутке в приложении «Блокнот», когда я начинаю редактировать текст, который в противном случае был бы скрыт клавиатурой.Я понимаю, что происходит в целом: приложение использует положение курсора, высоту клавиатуры и некоторое смещение для прокрутки блокнота.Однако мне неясно, какие именно объекты / значения меняются.

Что происходит в отношении фреймов, границ contentOffsets и т. Д.?

Редактировать : Меня интересует, как работает эта автоматическая прокрутка.Приложение «Блокнот» - просто хороший пример.

1 Ответ

2 голосов
/ 29 декабря 2011

Это описано в Текст, Интернет и Руководство по программированию для iOS :

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

Настройка содержимого обычно включает временное изменение размера одного или нескольких представлений и расположение их так, чтобы текстовый объект оставался видимым. Самый простой способ управления текстовыми объектами с помощью клавиатуры - встроить их в объект UIScrollView (или в один из его подклассов, например UITableView). Когда отображается клавиатура, все, что вам нужно сделать, это сбросить область содержимого представления прокрутки и прокрутить нужный текстовый объект в нужное положение. Таким образом, в ответ на UIKeyboardDidShowNotification ваш метод-обработчик будет делать следующее:

  1. Получить размер клавиатуры.
  2. Отрегулируйте нижнюю вставку содержимого представления прокрутки по высоте клавиатуры.
  3. Прокрутка целевого текстового поля в поле зрения.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...