我有一个Cordova应用程序(使用 angularjs框架),这是我的观点: 当我关注一个输入时,需要视图向上移动以在(屏幕上)键盘显示时保持输入可见: 当我将焦点从输入更改为其他位置(模糊)时
当我关注一个输入时,需要视图向上移动以在(屏幕上)键盘显示时保持输入可见:
当我将焦点从输入更改为其他位置(模糊)时,键盘会关闭(就像它应该),但会将视图重绘为错误的位置:
当我使用Chrome进行检查时,它会显示所有位置的元素,而不是它们在显示屏上的位置:
我完全不知道是什么导致了这个错误,我已经尝试在onDraw方法中重新绘制视图,因此无限重绘视图以查看是否会修复它但无济于事.有任何想法吗?
额外细节
Cordova版本:3.5.0-0.2.4
设备:Nexus 10 – Android 4.4.4
通过隐藏html标记然后重新显示它可以正确地重绘视图.
fixAndroidKitkatDisplayBug: function () { $(document).on('blur', 'input', function () { var htmlTags = document.getElementsByTagName('html'); var html = htmlTags[0]; html.style.display = 'none'; html.offsetHeight; // no need to store this anywhere, the reference is enough html.style.display = 'block'; }); }
然后在index.js中,在“onDeviceReady”之后我像这样调用这个方法
setTimeout(function (){ if (typeof(device) != 'undefined' && device.platform && device.platform == "Android" && device.version && parseFloat(device.version) == 4.4) { fixAndroidKitkatDisplayBug(); } }, 100);
(对我来说,我需要setTimeout才能定义设备)