Android 应用中的软键盘消失
Disappearing soft keyboard in Android app
我的 Android 应用程序出现异常问题。每当我在网页上输入一个输入字段时,软键盘出现并立即消失。
该应用程序集成了浏览器功能的 Crosswalk,虽然我想说这曾经在我以前使用 WebView 时发生过。
这是问题的屏幕录像:
似乎正在向上推或调整 HTML 以适应软键盘,但由于某种原因失败了。
有谁知道为什么会发生这种情况,更重要的是,知道如何解决它?
编辑:我发现如果我将 android:windowSoftInputMode="adjustPan" 添加到我的 AndroidManifest.xml 文件中,问题就不会发生.将其设置为 "adjustResize" 使其始终发生。
如果有人知道答案,我仍然希望得到一些帮助:)
此问题的解决方案是解决 Android 怪癖(其中有很多)。根据我的阅读,iOS 上不会发生这种情况,但我还没有对其进行测试以确认。
问题是出现软键盘时会触发 window 调整大小。当您使用响应式网站时,就像我一样,您可能会有处理调整大小的代码。当键盘出现时,会发生 window 调整大小,并且键盘会因自定义调整大小代码而消失。
解决方案一:
解决方案是将 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).
方案二:
chrisdew 在 上建议的替代解决方案建议 "adding a listener to the input's focus event which disables reacting to resize events for 0.5s."。如果您乐于在输入聚焦时有 0.5 秒的延迟,这也应该有效。
我的 Android 应用程序出现异常问题。每当我在网页上输入一个输入字段时,软键盘出现并立即消失。
该应用程序集成了浏览器功能的 Crosswalk,虽然我想说这曾经在我以前使用 WebView 时发生过。
这是问题的屏幕录像:
似乎正在向上推或调整 HTML 以适应软键盘,但由于某种原因失败了。
有谁知道为什么会发生这种情况,更重要的是,知道如何解决它?
编辑:我发现如果我将 android:windowSoftInputMode="adjustPan" 添加到我的 AndroidManifest.xml 文件中,问题就不会发生.将其设置为 "adjustResize" 使其始终发生。
如果有人知道答案,我仍然希望得到一些帮助:)
此问题的解决方案是解决 Android 怪癖(其中有很多)。根据我的阅读,iOS 上不会发生这种情况,但我还没有对其进行测试以确认。
问题是出现软键盘时会触发 window 调整大小。当您使用响应式网站时,就像我一样,您可能会有处理调整大小的代码。当键盘出现时,会发生 window 调整大小,并且键盘会因自定义调整大小代码而消失。
解决方案一:
解决方案是将 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).
方案二:
chrisdew 在 上建议的替代解决方案建议 "adding a listener to the input's focus event which disables reacting to resize events for 0.5s."。如果您乐于在输入聚焦时有 0.5 秒的延迟,这也应该有效。