当前位置 : 主页 > 手机开发 > cordova >

关闭键盘后查看重绘位置错误 – Cordova / PhoneGap – Android

来源:互联网 收集:自由互联 发布时间:2021-06-10
我有一个Cordova应用程序(使用 angularjs框架),这是我的观点: 当我关注一个输入时,需要视图向上移动以在(屏幕上)键盘显示时保持输入可见: 当我将焦点从输入更改为其他位置(模糊)时
我有一个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才能定义设备)

网友评论