在Android应用程序中消失的软键盘

时间:2016-07-10 21:21:14

标签: android cordova android-webview crosswalk-runtime crosswalk

我的Android应用有一个不寻常的问题。每当我将输入字段聚焦在网页上时,软键盘就会出现并立即消失。

该应用程序集成了Crosswalk以实现浏览器功能,但我想说这种情况曾经发生在以前使用过WebView时。

这是问题的屏幕录制:

Disappearing soft keyboard

似乎是推高或调整HTML的大小以适应软键盘,但由于某种原因失败。

有谁知道为什么会这样,更重要的是,知道如何修复它?

编辑:我发现如果我将 android:windowSoftInputMode =“adjustPan”添加到我的AndroidManifest.xml文件中,则问题不会发生。将其设置为“adjustResize”会使它始终发生。

如果有人知道答案,仍然会喜欢一些帮助:)

1 个答案:

答案 0 :(得分:0)

对此的解决方案是针对Android怪癖的解决方法(其中有很多)。根据我的阅读,这不会发生在iOS上,但我没有对其进行测试以确认。

问题是当软键盘出现时,会触发窗口调整大小。当您使用响应式网站时,就像我一样,您可能拥有处理调整大小的代码。当键盘出现时,会发生窗口调整大小,键盘因自定义调整大小代码而消失。

解决方案1:

解决方案是将 resize 事件重写为 orientationchange 事件。虽然这不是一个理想的情况,但如果一个应用程序是唯一的目标,那么应该没问题。

澄清,改变(使用jQuery):

$(window).resize (function ()
{
    // Code on resize
});

更改为(使用jQuery):

$(window).bind ('orientationchange', function ()
{
    // Code on screen rotation
});

我不确定浏览器对 orientationchange 的支持,因为http://caniuse.com上没有它,但我可以说它确实适用于当前版本的Crosswalk( 19.49.514.4)。

解决方案2:

chrisdew在https://stackoverflow.com/a/9229672/3509051建议的另一种解决方案建议&#34;为输入的焦点事件添加一个监听器,该事件禁止对0.5s的事件大小进行反应。&#34; < / em>的。如果你很乐意在输入被聚焦时有0.5秒的延迟,那么这也应该有效。