我编写了一个相当基本的 js 函数,它以编程方式自动将 iPhone 键盘完美地对齐到每个聚焦的输入字段下方(如果你喜欢,请随意使用它!)。对齐主要由 window.scroll 处理 - 一种适用于任何浏览器视图的标准方法,除了 UIWebView 因此phonegap/cordova (2.1)。所以我需要一个解决方法。
我的工作代码:
function setKeyboardPos(tarId) {
//programmatically: set scroll pos so keyboard aligns perfectly underneath textfield
var elVerticalDistance = $("#"+tarId).offset()["top"]; //i.e. 287
var keyboardHeight = 158;
var heightOfView = document.height; // i.e. 444
var inputHeight = $("#"+tarId).outerHeight();
var viewPortSpace = heightOfView-keyboardHeight; //i.e. 180
var verticalNewSroll = (elVerticalDistance+inputHeight)-viewPortSpace;
if(verticalNewSroll<0) { verticalNewSroll = 0; }
////
//OK, all done lets go ahead with some actions
$("#footer").hide(); //hide footer so that the keyboard doesn't push it on top of textfield
$("#containingDiv").css("bottom","0px"); //remove bottom space for footer
window.scrollTo(0,verticalNewSroll); //scroll! where the problem starts
}
就是在除了 UIWebView 之外的所有东西上工作。正如我上面提到的,除了 window.scrollTo 之外,一切都可以正常工作(注意,为了清楚起见,做了一些小的改动)。那么有人知道替代解决方案甚至是一个好的解决方法吗?
类似问题
window.scrollTo 在 IOS 的 phonegap 中不起作用
PhoneGap / Cordova scrollTo 忽略
上面还有三个类似的问题,它们在某种程度上指出了正确的方向。其中一位回答者提到了使用 css 来实现这一点。谁能想出一个更具体的例子?另一个人建议使用锚点,但这不是一个非常漂亮的解决方案,并且与我的其余代码配合得不是很好。