2

リモート サーバーでホストされているページを読み込む UIWebView があります。ドキュメントの準備ができると、非同期の jQuery.ajax リクエストをサーバーに送信して、サーバーから返された値のリストをドロップダウンに入力します。

ページをロードしてこのリクエストを実行している間、半透明の UIView と、UIWebView をオーバーレイする UIActivityIndi​​cator があります。ローディング ビューを削除する webViewDidFinishLoad デリゲート メソッドを実装しました。

  • iOS 4/5 では、このデリゲート メソッドは非同期リクエストが終了した後に実行されます。これは私が望む動作です。
  • iOS 6 では、非同期要求が完了する前にこのデリゲート メソッドが実行され、読み込み中のビューが早く消えてしまいます。

これが意図的なものかどうかは誰にもわかりません。この問題を解決する方法はありますか?

ありがとう!

4

1 に答える 1

0

これは意図的な変更であるという結論に達しました。基本的に、iOS 6 以降、webkit はそのコンテンツを非同期的に描画します。

http://developer.apple.com/library/ios/#releasenotes/General/RN-iOSSDK-6_0/_index.html#//apple_ref/doc/uid/TP40012166-CH1-SW13

したがって、ドキュメントの読み込み時の非同期リクエストは真に非同期になります。UIWebView のデリゲートには、このリクエストの実行中にドキュメントが完全に読み込まれたことが通知されます。iOS 6 より前では、この通知は非同期要求が終了した後に実行されていました。そのため、リクエストは完全に非同期ではありませんでした。

ファーガル。

于 2012-10-12T15:40:36.830 に答える