当屏幕底部的输入字段具有焦点时,键盘会推动我的webview,页面的上半部分不再可见。
我想阻止键盘向上推动webview。
有人有想法吗?
答案 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