2

iPad アプリケーションで、適度に DOM を集中的に使用する HTML ページのページ付けされたスライドショーを表示する必要があります。
すべてのドキュメントは iPad の画面に合わせて調整されているため、s 内でスクロールすることはありませんUIWebView

UIWebViewページネーションのためにs を中 に入れることにしましたUIScrollView
すべての Web ビューがコンテンツをレンダリングした後は、非常にうまくスムーズに動作します。

ただし、ユーザーがスクロールできるようになる前に、20、30、または 50 の Web ビューが読み込まれるのを待つ余裕はありません。数分かかります。ハンドラーで
スワイプを予測し、ユーザーがスクロールし続けると次のページをいくつかプリロードしようとしました。scrollViewDidScroll

これははるかにうまく機能しました (10 と 150 の Web ビューの間でパフォーマンスの違いはありません)。
ただしハンドラーを呼び出すとloadHTMLStringscrollViewDidScroll、スクロールが滑らかさを失います。

特定のものを表示するのに 1 秒長くかかるかどうかは気にしません —UIWebView私が望むのは、スクロールがスムーズでできるだけ早く利用できるようにすることとUIWebView、外出先で s を遅延してプリロードすることだけです。

どうすればそれを達成できますか?

4

1 に答える 1

1

これは難しい問題であり、簡単かつエレガントに解決する方法はありません。

スクロールを高速化する 1 つの方法は、質問で述べたようにページを遅延ロードすることです。ただし、スムーズさを確保するために、ロードが発生するタイミングを制御する必要があります。

たとえば、最初の起動時に最初の 5 ページを読み込むことから始めたとします。ユーザーがページ 2 にスクロールしてSTOPSすると、ページ 6 の読み込みを開始します。ユーザーが再びスクロールを開始するとすぐに、読み込みを一時停止して、新しいページで停止したときにのみ読み込みを再開します。間にロードを一時停止すると、スクロールがスムーズになります。また、可能な場合はデータを解放するようにしてください。データが蓄積され、行のスムーズなスクロールが妨げられる可能性があるためです。

もう 1 つのオプションは、ユーザーがページで停止した直後にのみ UIWebView の読み込みを開始することです。つまり、ページまでスクロールすると、スクロールが停止すると、HTML の読み込みが開始されます。これは最初のオプションほど「きれい」ではありませんが、スクロールがスムーズになります。

もう 1 つのオプションは、これはちょっと変わっていますが、すべての HTML ページのリッチ テキストを実行して読み込むことです。DOM を集中的に使用するものはすべて除外します。次に、このメソッドを使用して、セミロードされたページのスクリーン ショットを取得します。ユーザーがページで停止すると、DOM を集中的に使用するものを含めて、ページ全体をロードします。これにより、ユーザーは、すべてがロードされた状態ですばやくスクロールしているように感じることができます。

これは、私が以前に使用した素晴らしいスクロール クラスです。

方法 3 に役立つコードを次に示します。

頑張ってください。これがお役に立てば幸いです。

編集: これは、webView のスクロールの問題をどのように解決したかについて、LinkedIn の人たちからの素晴らしい投稿です。一読の価値があります。

于 2012-07-16T18:36:35.283 に答える