Сенсорная панель Sencha / проблема с отображением даты - PullRequest
0 голосов
/ 10 января 2012

Я поддерживаю приложение Sencha Touch 1.1 и пытаюсь решить проблему, замеченную на планшетах Android (в частности, на Samsung Galaxy Tab S, Android 3.1).

Проблемапроисходит то, что в форме входа есть два поля: текстовое поле Sencha и поле выбора даты Sencha.Когда пользователь фокусируется на вводе текста, а затем нажимает, чтобы сфокусировать поле средства выбора даты, виртуальная клавиатура сворачивается, и средство выбора даты отображается над тем местом, где заканчивалась виртуальная клавиатура (примерно в середине страницы).

Обратите внимание, что этого не происходит, когда пользователь сначала фокусируется на поле выбора даты;это наводит меня на мысль, что это как-то связано с тем, что Sencha неправильно обрабатывает событие изменения размера окна, которое генерируется всякий раз, когда клавиатура отображается или скрывается, и впоследствии не может соответствующим образом пересчитать размеры содержащего объекта вида.

Представление расширяет Ext.Panel (отсюда и название), я пытался использовать методы doLayout и doComponentLayout, когда происходит событие resize, однако ни один из них не работает.

Есть идеи?

1 Ответ

2 голосов
/ 10 января 2012

Это сложно, и это связано с тем, что высота контейнеров не полностью возвращается из-за анимации, скрывающей клавиатуру.

Прежде всего, вы можете попробовать добавить длительную задержку 1-2 секунды, прежде чем показывать сборщик, чтобы подтвердить, что это проблема.

Если это так, то мне приходят на ум хитрые обходные пути:

  • Сохранить высоту панели контейнера (необходимо обновить onorientationchange)
  • Когда вызывается сборщик (вам нужно выяснить, какое событие сборщика прослушать, либо beforeadd, beforerender или beforeshow), вы проверяете, что высота не ниже, либо вы отменяете действие сборщика.
  • Установите интервал, чтобы проверить его через пару миллисекунд, пока высота не будет восстановлена ​​и нижнее поле не будет правильным.

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

Обратите внимание, что при этом предполагается, что высота панели или области просмотра изменяет ее высоту с помощью отображаемой клавиатуры, если нет, вам следует искать какие-либо свойства, которые могут быть изменены, или даже добавлять логическую переменную в событие onresize для проверки перед показом сборщика.

...