私はかなり基本的な 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 無視
上記のさらに 3 つの同様の質問は、1 つを正しい方向に向けています。回答者の 1 人は、これを達成するための css の使用について言及しています。誰かもっと具体的な例を思いつくことができますか? 別の人がアンカーを提案していますが、それはあまりきれいな解決策ではなく、私のコードの残りの部分とうまくいきません。