2012-01-09 62 views
0

我在维护Sencha Touch 1.1应用程序,并试图解决我们在Android平板电脑(特别是三星Galaxy Tab S,Android 3.1)上注意到的问题。Sencha触控面板/日期选择器渲染问题

发生的问题是登录表单上有两个字段:Sencha文本字段和Sencha日期选择器字段。当用户使文本输入为焦点,然后点击以聚焦日期选择器字段时,虚拟键盘将折叠并且日期选择器显示在虚拟键盘结束的位置(大约在页面中间)。

请注意,当用户首先关注日期选择器字段时,不会发生这种情况;这导致我相信这与Sencha没有正确处理每当键盘被显示或隐藏时抛出的窗口大小调整事件有关,并且因此未能相应地重新计算包含的视图对象的维度。

该视图扩展了Ext.Panel(因此标题),我尝试了使用doLayout和doComponentLayout方法时发生resize事件,但是,似乎都没有工作。

任何想法?

+0

我知道Sencha 2.0即将推出,我听说它解决了很多Android上的问题。 – ToddBFisher 2012-01-10 00:21:52

回答

2

这很难,因为隐藏键盘的动画,容器高度没有完全恢复。

首先,您可以尝试在显示选取器之前1-2秒内添加长时间延迟以确认这是问题。

如果是,有浮现在我的脑海里一个棘手的解决方法:

  • 保存容器板的高度(必须更新onorientationchange)
  • 当选择器被称为(你需要找出哪些选择器事件听,beforeadd,beforerenderbeforeshow)您验证高度不低或否则您取消选取器操作。
  • 设置一个时间间隔,以在几毫秒后验证它,直到恢复高度并且下边距是正确的。

您可能还想取消在容器面板上发生orientationchange时显示选取器,以避免出现更多问题。

请注意,这是假定面板的高度或视口使用所显示的键盘更改其高度,如果不是,您应该查看可能会更改的任何属性,或者甚至向onresize事件添加布尔变量以验证反对之前显示选取器。

+0

谢谢!虽然我还没有得到这个工作,但这确实让我朝着正确的方向前进,并且我发现了一个埋在Sencha 2.0预览版源中的类似方法。 现在我只需要将它移植到... – jszpila 2012-01-11 20:08:46