javascript - Sencha 触摸面板/日期选择器渲染问题

标签 javascript datepicker sencha-touch

我正在维护 Sencha Touch 1.1 应用程序,并尝试解决我们在 Android 平板电脑(特别是 Samsung Galaxy Tab S、Android 3.1)上注意到的问题。

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

请注意,当用户首先关注日期选择器字段时,不会发生这种情况;这让我相信这与 Sencha 没有正确处理每当键盘显示或隐藏时引发的窗口调整大小事件有关,并且随后无法相应地重新计算包含 View 对象的尺寸。

View 扩展了 Ext.Panel(因此标题),我尝试在发生调整大小事件时使用 doLayout 和 doComponentLayout 方法,但是似乎都不起作用。

有什么想法吗?

最佳答案

这很难,并且与由于隐藏键盘的动画而未完全恢复容器高度有关。

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

如果是的话,我想到了一个棘手的解决方法:

  • 保存容器面板的高度(必须在orientationchange时更新)
  • 当调用选择器时(您需要确定要监听哪个选择器事件,beforeaddbeforerenderbeforeshow)验证高度不低于,否则您将取消选取器操作。
  • 设置一个时间间隔,在几毫秒后进行验证,直到高度恢复且下边距正确。

您可能还想在容器面板上发生方向更改时取消显示选取器,以避免出现进一步的问题。

请注意,这是假设面板的高度或视口(viewport)随显示的键盘改变其高度,如果没有,您应该留意可能更改的任何属性,甚至向 onresize 事件添加一个 bool 变量以进行验证在显示选择器之前。

关于javascript - Sencha 触摸面板/日期选择器渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8794712/

相关文章:

javascript - 从 JavaScript 调用 applet 的方法

javascript - Django 表单 - django-bootstrap-datepicker-plus 不呈现日期选择器

jQuery UI datepicker - 我可以格式化已本地化的日期吗?

sencha-touch - Sencha Touch 列表未显示(再次!)

html - sencha touch list实现分页

javascript - jQuery - 这个时间线是如何制作的?

javascript - 甚至基本的 javascript 都无法正常工作 [noob here]

php - triconsole 日历不与位于下方的日历重叠

ios - Sencha Touch 未初始化

javascript - 使用 jquery/js 将实际页面的 URL 传递到其他页面的输入字段中