2012-09-24 220 views
2

我有一個UIWebView加載在遠程服務器上託管的頁面。在準備好文檔之後,它會向服務器發出一個異步的jQuery.ajax請求,以從服務器返回的值列表填充下拉列表。iOS 6 UIWebView委託方法

當它加載頁面並執行此請求時,我有一個半透明的UIView和覆蓋UIWebView的UIActivityIndi​​cator。我已經實現了刪除加載視圖的webViewDidFinishLoad委託方法。

  • 在iOS 4/5中,這個代理方法在異步請求完成後執行。這是我想要的行爲。
  • 在iOS 6中,此委託方法在異步請求完成之前執行並且加載視圖過早消失。

有誰知道這是故意的。任何想法如何解決這個問題?

謝謝!

+0

您確定請求得到執行嗎?可能請求獲取緩存,如下所述:[iOS 6上的Safari是否緩存$ .ajax結果?](http://stackoverflow.com/questions/12506897/is-safari-on-ios-6-caching-ajax-results ) –

+0

感謝您的迴應。 jQuery ajax請求使用jsonp,所以每次都有一個唯一的回調方法作爲參數傳遞,所以它不應該緩存它。我還驗證了使用代理的請求是每次200。服務器的緩存控制響應頭也是「no-cache」。您提供的鏈接中的答案之一就是建議讓「無緩存」解決問題。 –

+0

在beta更改日誌中,我看到:在iOS 6及更高版本中,UIWebView類異步地繪製其內容。我想知道它與此有關嗎? –

回答

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之前,此通知將在異步請求完成後執行。所以這個請求並不是真正的異步。

Fergal。