如何使用phonegap防止键盘在iOS应用程序中推送webview

时间:2012-12-11 12:08:22

标签: ios cordova webview keyboard

当屏幕底部的输入字段具有焦点时,键盘会推动我的webview,页面的上半部分不再可见。

我想阻止键盘向上推动webview。

有人有想法吗?

6 个答案:

答案 0 :(得分:25)

在焦点上,设置 window.scrollTo(0,0); 这可以防止键盘完全推送webview

$('input').on('focus', function(e) {
    e.preventDefault(); e.stopPropagation();
    window.scrollTo(0,0); //the second 0 marks the Y scroll pos. Setting this to i.e. 100 will push the screen up by 100px. 
});

如果不想为Y滚动位置设置静态值,请随时使用此short plugin I've written that automatically aligns the keyboard underneath the input field。它并不完美,但它能完成这项工作。只需在焦点上调用它,如上所示:

setKeyboardPos(e.target.id);

答案 1 :(得分:13)

使用 driftyco / ionic-plugins-keyboard https://github.com/driftyco/ionic-plugins-keyboard

解决了这个问题

首先安装键盘插件:

cordova plugin add com.ionic.keyboard

现在您可以 I)禁用本机键盘滚动:

cordova.plugins.Keyboard.disableScroll(true);

II)聆听native.keyboardshow中的deviceready事件,并在键盘显示时滚动回顶部:

window.addEventListener('native.keyboardshow', keyboardShowHandler);

function keyboardShowHandler(e){
    setTimeout(function() {
        $('html, body').animate({ scrollTop: 0 }, 1000);
    }, 0);
}

我使用了II)方法因为我喜欢动画滚动。如果您不想使用动画,请用window.scrollTo(0, 0);替换相应的行。但我担心在那种情况下你将再次处理这个“垃圾抖动动画” Imskull 所写的内容。

答案 2 :(得分:4)

我遇到了同样的问题,上面的解决方案都没有帮助我 但是我发现了一种简单的方法。

在platform / android文件夹中打开manifest.xml并在主活动标签中用android替换android:windowSoftInputMode =“adjustResize”属性:windowSoftInputMode =“adjustPan”

现在键盘将覆盖您的内容。

我希望它会帮助别人。

答案 3 :(得分:3)

在config.xml中确保这一点

<preference name="KeyboardShrinksView" value="true" />

答案 4 :(得分:3)

在我必须自己找到答案之前,我通过了100个答案。所以这里是如何禁用IOS上的UI滚动。 只是当cordova加载时,添加它。 请安装:

cordova plugin add ionic-plugin-keyboard --save

然后执行cordova prepare将这个新插件加载到www文件夹中。

document.addEventListener('deviceready', function(e){
    window.addEventListener('native.keyboardshow', function () {
            cordova.plugins.Keyboard.disableScroll(true);
        });
});

就是这样。如果这有用,请告诉我。我很乐意回答更多。

答案 5 :(得分:2)

将此选项添加到config.xml上对我来说很成功。

<preference name="KeyboardShrinksView" value="true" />

它已在Cordova 3.2.0中删除,但在cordova-plugin-keyboard中可用。

您需要安装此插件,此选项才能再次使用

cordova plugin add cordova-plugin-keyboard