作者:鎏源大哥 | 来源:互联网 | 2023-05-21 15:15
使用适用于Android和iOS的Phonegap 3.6.3创建移动应用程序.问题仅适用于Android,因为iOS会按照我的意愿行事.
当我单击输入文本字段或textarea时,会出现一个软键盘.它有时涵盖这些元素.
这些页面放在iScroll中,位于底部,另一个是绝对放置的div,因此一旦屏幕弹出,我就无法滚动到其中任何一个.我怀疑当键盘出现时我必须将webview更改为更小.然而,在尝试了很多东西后,它无法正常工作.
config.xml中
(已经为android-windowSoftInputMode尝试了许多不同的值,如下例所示)
网页的负责人
(是的,我也尝试过很多其他的东西)
您可能认为相关的任何其他内容,请告诉我.不幸的是,我不能自由地分享太多代码,但根据我的理解,我们需要担心的是.
谢谢,
1> rajmathan..:
我也有同样的问题 - 看起来潜在的问题是你不能用cordova Build编辑androidManifest文件.您所能做的就是编辑config.xml
文件,这实际上只允许您更改有限的设置子集.我想要的是能够改变windowSoftInputMode
.
我确实找到了解决问题的方法.这是键盘出现在屏幕底部的字段上,我认为这是你遇到的同样问题.我使用过cordova 2.9.0和cordova 3.6.0
解决方案1:我找到的解决方案是更改此设置config.xml
这样做的设置设置为"false"而不是"true" - 页面现在向上滚动以显示键盘打开时正在编辑的字段.(为了更准确,我相信viewport
更改而不是向上滚动.希望你在视口部分是正确的)
解决方案2:尝试从config.xml中删除或替换此行
如
代替.这对我来说很有用.
解决方案3:尝试将此样式添加到您的页面
编辑:
如果您正在使用jQuery
,可以试试.
$('input, textarea, button, a, select').off('touchstart mousedown').on('touchstart mousedown', function(e) {
e.stopPropagation();
});
2> 小智..:
我的解决方案是使用Ionic键盘插件并实现此代码:
HTML:
...
CSS:
.page-content {
height: 100%;
overflow: auto;}
使用Javascript:
当keyborad打开时
window.addEventListener('native.keyboardshow', function (e) {
var deviceHeight = window.innerHeight;
var keyboardHeight = e.keyboardHeight;
var deviceHeightAdjusted = deviceHeight - keyboardHeight;//device height adjusted
deviceHeightAdjusted = deviceHeightAdjusted <0 ? (deviceHeightAdjusted * -1) : deviceHeightAdjusted;//only positive number
document.getElementById('page').style.height = deviceHeightAdjusted + 'px';//set page height
document.getElementById('page').setAttribute('keyBoardHeight', keyboardHeight);//save keyboard height
});
键盘关闭时
window.addEventListener('native.keyboardhide', function (e) {
setTimeout(function () {
document.getElementById('page').style.height = 100 + '%';//device 100% height
}, 100);
要提供更好的用户体验,请为所有输入添加此代码
var inputs = document.querySelectorAll('input');//select all input
var n = inputs.length;
for (var i = 0; i = keyboardHeight) {
padding *=5;
document.getElementById('page').scrollTop = targetPosition - padding;
}
}
} catch (ex) {
alert(ex.message);
}
}, 600);
}, true);