当屏幕底部的输入字段获得焦点时,键盘将我的 webview 向上推,页面的上部不再可见。
我想防止键盘向上推 webview。
有人有想法吗?
在焦点上,设置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 滚动位置设置静态值,请随意使用我编写的这个简短插件,它会自动在输入字段下方对齐键盘。它并不完美,但它可以完成工作。只需将其称为焦点,如上所示:
setKeyboardPos(e.target.id);
使用driftyco/ionic-plugins-keyboard ( https://github.com/driftyco/ionic-plugins-keyboard )解决了这个问题
首先安装键盘插件:
cordova plugin add com.ionic.keyboard
现在你可以我)要么禁用本机键盘滚动:
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所写的“垃圾抖动动画”。
我遇到了同样的问题,上面的解决方案都没有帮助我,但我找到了一个简单的方法来解决它。
在 platform/android 文件夹中打开 manifest.xml 并在主活动标签中将 android:windowSoftInputMode="adjustResize" 属性替换为 android:windowSoftInputMode="adjustPan"
现在键盘将覆盖您的内容。
我希望它会帮助某人。
在我不得不自己找到答案之前,我确实经历了 100 个答案。所以这里是如何在 IOS 上禁用 UI 的滚动。只需在加载科尔多瓦时,添加它。请安装:
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);
});
});
就是这样。请让我知道这是否有帮助。我很乐意回答更多。
将此选项添加到config.xml
对我来说是诀窍。
<preference name="KeyboardShrinksView" value="true" />
It has been removed in Cordova 3.2.0 but is available in cordova-plugin-keyboard.
You need to install this plugin and this option will work again
cordova plugin add cordova-plugin-keyboard
确保在您的 config.xml
<preference name="KeyboardShrinksView" value="true" />