2012-01-09 4 views
0

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

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

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

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

Любые идеи?

+0

Я знаю, что Sencha 2.0 скоро выйдет, я слышал, что он затрагивает множество проблем на Android. – ToddBFisher

ответ

2

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

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

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

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

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

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

+0

Спасибо! Хотя мне еще не удалось это сделать, это заставляет меня двигаться в правильном направлении, и я нашел аналогичный подход, зарытый в источнике предварительного просмотра Sencha 2.0. Теперь мне просто нужно поработать над портированием ... – jszpila