6

软件

我正在使用 Sencha Touch (2.1.1) 和 PhoneGap (2.5.0) 开发适用于 Android 和 iOS 的应用程序。

我的问题

在容器底部有一些带有输入字段(Ext.field.TextExt.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 更改windowSoftInputModeadjustNothing,但是在隐藏键盘之前你不会看到输入的文本......

更新

Sergio 对 3 种缓解措施的一些评论。

第一个解决方案对我来说似乎是最好的。它只影响 Android 项目,不会使我的 JS(例如if Ext.os.is.Android ...)或 iOS 代码膨胀。windowSoftInputMode不幸的是,如果我按照描述进行设置,我的 Nexus 4 仍会调整焦点并且不会恢复模糊...

第二种解决方案听起来更复杂。如果操作系统是 Android,我需要将每个(底部对齐的)组件移到焦点上并恢复模糊。虽然这绝对是可能的,但可能还有另一个问题:用户可以使用设备的后退键隐藏键盘,而无需移除输入的焦点(不触发模糊)。所以我认为这不是一个合适的解决方案。

第三种解决方案适用于数字输入。但是为文本输入编写一个虚拟键盘是一项艰巨的任务:不同语言环境的键对齐方式不同(例如,德语键盘上的yz被调换)并且我们在提供替代键盘时无法满足用户的期望(滑动输入、建议、 ...)。

不要误会我的意思,我很感谢您与我分享您的缓解措施!但我还不完全满意。

4

2 回答 2

2

Sencha Touch 2.2.0 修复了这个问题!

我终于找到了合适的解决方案。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 可以正常工作。

更新 #2: Sencha Touch 2.2.1...

嗯..我刚刚升级到 Sencha Touch 2.2.1 问题又回来了!因此,如果您打算使用最新的 Sencha Touch 版本,请注意键盘可能会使您的布局崩溃:/

于 2013-04-27T13:11:48.633 回答
1

几个月前,我花了很多时间试图解决这个问题。尝试了一堆东西,通过 Google/StackOverflow 筛选。

最终我无法做到我想要的。看起来我们对很多事情的 Sencha Touch/PhoneGap 的键盘控制不够(简单)(在键盘位置的顶部,我们对“返回/去/确定”的控制基本上也为 0 button 实际上确实如此,这在 Android 版本之间有所不同,尤其是当它是一个数字字段时。)但是:

缓解 1: windowSoftInputMode="stateUnspecified|adjustResize"将导致键盘覆盖输入,但一旦用户开始输入,屏幕将调整以显示键盘正上方的输入,并且在输入模糊时会根据需要恢复。至少我的三星 Galaxy S2 (2.6)、三星 Galaxy S3 (4.2) 和京瓷 Rise (4.0) 就是这种情况。

缓解 2:我实施的一种解决方案是,在输入焦点上,更改输入的位置以确保它们位于键盘上方。输入模糊后,输入将更改为其原始位置。这并不理想,因为您经常会看到输入在键盘覆盖之前移动到新位置,因此看起来很笨拙。

缓解 3:对于数字字段,我使用了https://market.sencha.com/extensions/numpad的修改版本,它创建了一个虚拟键盘并将其设置为“showBy()”所需的输入。这确保了键盘永远不会掩盖输入,并且应用程序不必处理屏幕的任何重新定位(下面的屏幕截图)。

缓解问题 3:这里的问题是它仅适用于数字字段,并且我无法找到 Sencha Touch 的任何标准键盘插件(我的应用程序以数字为中心,因此限制是可以接受的。)也就是说,我是当然,您可以花几天时间使用 numpad 插件作为核心来构建一个可以以类似方式工作的虚拟键盘。

很抱歉没有完美的解决方案。我希望这是有帮助的!

在此处输入图像描述

于 2013-04-22T02:21:48.680 回答