web-dev-qa-db-ja.com

固定配置要素を移動するiOS 7入力要素

古いアプリは今のところ機能しないため、iOS 7用にアプリを再コンパイルしようとしています。多くの問題の1つは、UIWebViews内でいくつかの入力を使用していることです。テキスト入力、ピッカーなど.

IOS 7の輝く白いキーボードが表示されると、仮想キーボードの「上部」がUIWebViewの新しい下部であるかのように、Webページの下部にあるすべての固定要素(確認ボタンなど)が上にスクロールされます。これはiOS6.xとは実質的に異なる動作です

JS/CSSをwebViewに挿入せずに、仮想キーボードの動作を以前と同じように機能させるための魔法のトリックはありますか?

19
Francesco

これにより、cordovaアプリの問題が修正されました。それがあなたに当てはまるかどうかはわかりませんが、念のためです。

次のようなもののためにあなたのhtmlメタタグを確認してください:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">

これに置き換えてください:

<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi" />
44
Opossum

私たちの場合、これはユーザーがスクロールするとすぐに自動的に修正されます。したがって、これは、blurまたはinputでのtextareaのスクロールをシミュレートするために使用してきた修正です。

$(document).on('blur', 'input, textarea', function () {
    setTimeout(function () {
        window.scrollTo(document.body.scrollLeft, document.body.scrollTop);
    }, 0);
});
8
basarat

私はまったく同じ問題に遭遇し、2日間の実験の後にあきらめました。それは次のようです:a)すべての下部に固定された要素は上向きになり、下部のオフセットはキーボードの上端に相対的になりますc)すべての上部に固定された要素は元の位置にとどまります(以前のように上に移動しないでください)-トップアブソリュート要素は問題なく動作することに注意してください。

私が見つけた唯一の解決策は、すべての固定要素を絶対要素に置き換え、css bottomプロパティをautoに設定し、代わりにtopを使用するカスタムiPadスタイルシートを持つことでした

6
Pawel Lipka