2

名前のないアプリの UIWebView 内で実行されるフルスクリーン広告を作成しています。基本的に、ビューポートのメタタグをまったく変更できないため、アプリを全画面表示するには正確に 1023x767 にする必要があり、Web ビューをスクロールしません。奇妙なバグを引き起こす 1 つのシナリオを除いて、95% の確率で機能します。横向きで開始してから水平に回転すると、アプリがビューポートよりも大きいかのように WebView をスクロールできます。

CSSには、次のものがあります。

@media only screen and (orientation: portrait) {
    html, body {
        width: 767px;
        height: 1023px;
        overflow:hidden;
        position:relative;
    }
}

@media only screen and (orientation:landscape) {
    html, body {
        width: 1023px;
        height: 767px;
        overflow:hidden;
        position:relative;
    }
}

向きの変化に関するイベントを検出しています。次のようになっています。

$('html').width() = 767
$('html').height() = 1023
$('body').width() = 767
$('body').height() = 1023

ただし、これも同時に取得していることがわかりました。これは明らかに問題ですが、理由や修正方法がわかりません。

$(window).width() = 1023
$(window).height() = 1365

何かご意見は?誰!?:-)

4

1 に答える 1

2

したがって、さらに調査した結果、veiwport メタタグを使用して width=device-width を確立できなかった理由は、ビューポートが実際にはデバイスの幅より 1 ピクセル小さく設定されているためです。次に、そのデッド ピクセル領域でビューポートをスクロールします。アプリは左右のスワイプを検出して異なる Web ビュー間で変更するため、「e.preventDefault()」を実行してスクロールを無効にすることはできず、1 ピクセルのスクロールでスタックするとアプリのスワイプ機能が台無しになります。

簡単に言えば、私は次のことができました:

viewport=(device-width-1) で、問題が修正されました。アプリの人々はこれが可能であることを知りませんでしたし、私もこのようなことが可能かどうか確信が持てませんでしたが、そのデッドスペースで立ち往生していないため、スワイプが引き続き発生するようになりました.

于 2012-04-19T20:15:13.923 に答える