0

UIWebView はコンテンツを正常にロードしましたが、表示していません。UIWebView はただの白い画面です。ただし、この UIWebView をクリックすると、クリックが処理されます。たとえば、リンクがあるべき場所 (実際には空白) をクリックすると、クリックが処理され、次のページが読み込まれて表示されます OK

バグは不安定です。ローカルの HTML ファイル (ローカルで生成された私たちのホームページ) だけで取得しました。Web コンテンツは正常に読み込まれます。20%のケースで発生します。しかし同時に、それは非常に粘着性があります。白い画面が表示されると、このページを何度もリロードして白い画面を見ることができます (ただし、非表示のリンクをクリックすると、別のページが正常に表示されます)。時折、理由もなく表示されることがあります。この空白の画面を上下に「スクロール」すると、時々読み込まれます。このローカル HTML には多くのもの、埋め込み画像、JavaScript などがあります。これは JavaScript の問題である可能性がありますが、そのコンテンツが見えなくてもクリック可能である理由を説明できません。

iPod実機とiPhoneシミュレーター4.3で発生しますが、iPadやiPadシミュレーターでは再現できません。

これを解決するために丸一日を費やしました。何か案は?

4

1 に答える 1

0

私はこれを解決しました!

UIWebView のこの非常に奇妙な動作は、javascript コードが原因でした。JavaScriptは次のようでした(簡略化):

    <script>

    function onLoad() {
       location.href='xxx://pageLoaded';
    }

    </script>

<body onload='onLoad();'>

このコードの目的は、ページが読み込まれたという事実をアプリに通知することでした。アプリでは、xxx://pageLoaded へのリクエストをキャッチしてキャンセルします(shouldStartLoadWithRequest)。キャンセル申請なので、こちらで問題ないと思います。特に、コンテンツが見えなくなるとは思っていませんでしたが、それでもクリック可能です。火と変化setTimeoutの間にタイマー( )を追加しました。それは問題を解決します。onloadlocation.href

webViewDidFinishLoad注:のイベントについては知っていUIWebViewます。これは、問題と解決策を説明するための非常に単純化された例です。実際の JavaScript はより洗練されており、単純な使用では到達できませんwebViewDidFinishLoad

于 2012-07-20T13:53:56.300 に答える