【发布时间】:2013-04-18 16:59:49
【问题描述】:
软件
我正在使用 Sencha Touch (2.1.1) 和 PhoneGap (2.5.0) 开发适用于 Android 和 iOS 的应用程序。
我的问题
在容器底部有一些带有输入字段的视图(Ext.field.Text 和Ext.field.Email)。当您点击输入字段时,Android SoftKeyboard 会显示并将整个视图推到顶部,这样输入字段就不会被键盘隐藏。
现在,当您隐藏键盘时(通过按下 Android 隐藏按钮或点击输入字段以外的任何位置),WebView 不会总是弹回,直到您再次点击 WebView。
硬件
目前我在 Nexus 4 (Android 4.2.2) 上遇到了这个问题。它在 iOS (iPhone 4/5) 甚至在 Sony XPERIA Go (Android 4.0.4) 上都能正常运行。
截图
以下是问题的一些截图:
我已经想到可以将 Android 的 windowSoftInputMode 更改为 adjustNothing,但是在隐藏键盘之前你不会看到输入的文本...
更新
Sergio 提出的 3 种缓解措施的一些方法。
第一个解决方案对我来说似乎是最好的。它只影响 Android 项目,不会膨胀我的 JS(例如if Ext.os.is.Android ...)或 iOS 代码。不幸的是,如果我按照描述设置windowSoftInputMode,我的 Nexus 4 仍然会调整焦点并且不会恢复模糊...
第二种解决方案听起来更复杂。如果操作系统是 Android,我需要将每个(底部对齐)组件移到焦点上并恢复模糊。虽然这绝对是可能的,但可能还有另一个问题:用户可以使用设备的后退键隐藏键盘,而无需移除输入的焦点(不触发模糊)。所以我认为这不是一个合适的解决方案。
第三种解决方案适用于数字输入。但是为文本输入编写一个虚拟键盘是一项艰巨的任务:不同语言环境的键对齐方式不同(例如,y 和 z 在德语键盘上被调换),我们不会匹配用户在提供替代键盘时的期望(滑动输入、建议等)。
不要误会我的意思,我很感谢您与我分享您的缓解措施!但我还没有完全满意。
【问题讨论】:
-
哦,是的,我列出的都不是很好的解决方案;如果事情......像......按照他们应该的方式工作会更好:p。我没有想到键盘的本地化问题,这是一个很好的观点;那不会太好用。还有 Nexus 4 上的 windowSoftInputMode,不幸的是它在那里不起作用。祝你找到真正的解决方案好运!
-
我已经更新了关于 Sencha Touch 2.2.1 的答案 ...
标签: android cordova sencha-touch-2