Важно (9.07.22)

Если картинки в постах не отображаются, зайдите в блог через прокси. РКН заблокировал поддомены blogger.com на которые загружались картинки.

пятница, 13 декабря 2013 г.

Перемещение элементов управления в видимую область, при отображении виртуальной клавиатуры.

Dave Nottage уверен, что почти все, кто разрабатывает приложения для мобильных устройств, натыкались на подобную проблему: средства редактирования расположены на экране достаточно низко и при отображении клавиатуры, элементы перекрываются ей.
Android и iOS не настолько умны, чтобы автоматически сдвигать скрытые под клавиатурой элементы в видимую область.
Пример такой ситуации вы можете видеть ниже (анимация):

Upd (30.01.14). Добавлено ещё одно решение.
Upd (23.04.14). Добавлена ссылка на второе решение в Delphi XE6


Одной из задач является сохранение положения ToolBar и при этом перемещение всех остальных элементов. 
Пример с использованием TEdit:

Пример с использованием TMemo:

Автор статьи решил данную задачу и выложил код в открытый доступ.
Ссылка на демо проект, код которого вы можете использовать в любом FireMonkey проекте.

С сайта автора: Move Control For Virtual Keyboard Demo
Бекап в блоге: Move Control For Virtual Keyboard Demo

Upd (30.01.14). Ещё одно решение: ScrollableForm demo available from Embarcadero
Upd (23.04.14). Delphi XE6: FMX.Mobile.ScrollableForm Sample (Delphi)


p.s. Это вольный перевод статьи Moving controls into view when the virtual keyboard is shown (Автор: Dave Nottage)