我正在使用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)甚至索尼XPERIA Go(Android 4.0.4)。
以下是该问题的一些屏幕截图:
我已经发现我可以将Android的windowSoftInputMode
更改为adjustNothing
,但在隐藏键盘之前你不会看到输入的文字......
塞尔吉奥对3项缓解措施的一些评论。
第一个解决方案对我来说似乎是最好的。它只会影响Android项目,并且不会使我的JS(例如if Ext.os.is.Android ...
)或iOS代码膨胀。不幸的是,如果按照描述设置windowSoftInputMode
,我的Nexus 4仍然可以调整焦点并且不会恢复模糊...
第二种解决方案听起来更复杂。如果操作系统是Android,我需要在焦点上移动每个(底部对齐)组件并恢复模糊。虽然这绝对是可能的,但可能还有另一个问题:用户可以使用设备的后退键隐藏键盘而不删除输入的焦点(模糊不会触发)。所以我认为这不是一个合适的解决方案。
第三种解决方案适用于数字输入。但是为文本输入编写虚拟键盘是一项艰巨的任务:区域设置之间的键对齐方式不同(例如 y 和 z 在德语键盘上转换)我们将无法匹配提供替代键盘时用户的期望(滑动输入,建议......)。
别误会我的意思,我很感谢你和我分享了你的缓解措施!但我还没有完全满意。
答案 0 :(得分:2)
我终于找到了合适的解决方案。 4月15日,Sencha发布了Touch框架的2.2.0版本。从2.1.0升级后,布局恢复正常!
要节省其他时间:请注意Sencha Cmd 3.1.x(2.2.0所需)不适用于Ruby 2.0.0。构建过程将失败并出现一些奇怪的错误消息。使用1.9.3可以正常工作。
嗯..我刚刚升级到Sencha Touch 2.2.1,问题又回来了!因此,如果您计划使用最新的Sencha Touch版本,请注意键盘可能会使您的布局崩溃:/
答案 1 :(得分:1)
几个月前,我花了很多时间试图解决这个问题。尝试了一堆通过Google / StackOverflow筛选的东西。
最终我无法完全按照自己的意愿行事;看起来我们对Sencha Touch / PhoneGap的键盘有足够的(简单的)控制很多东西(在键盘位置的顶部,我们也基本上控制了什么“return / go / ok”)按钮实际上是这样的,它在Android版本之间有所不同,特别是当它是一个数字字段时。)但是:
缓解1: windowSoftInputMode="stateUnspecified|adjustResize"
会导致键盘覆盖输入,但是一旦用户开始输入,屏幕将会调整以显示键盘正上方的输入,事情会如此在输入模糊时根据需要恢复。这至少适用于我的三星Galaxy S2(2.6),三星Galaxy S3(4.2)和Kyocera Rise(4.0)。
缓解2:我实施的一个解决方案是,在输入焦点上,更改输入的位置以确保它们位于键盘上方。输入模糊后,输入将更改为其原始位置。这并不理想,因为您经常会在键盘覆盖之前看到输入移动到新位置,所以它看起来很漂亮。
缓解3:对于号码字段,我使用了https://market.sencha.com/extensions/numpad的修改版本创建了虚拟键盘,并将其设置为“showBy()”所需的输入。这确保了键盘从不掩盖输入,应用程序无需处理任何重新定位的屏幕(下面的屏幕截图)。
缓解问题3:这里的问题是它只适用于数字字段,而且我无法为Sencha Touch找到任何标准键盘插件(我的应用程序是数字聚焦的,因此限制可以接受。)那就是说,我相信你可以用numpad插件作为核心来构建一个可以类似方式工作的虚拟键盘。
抱歉缺乏完美的解决方案。我希望这有用!