iOS 6 UIWebView委托方法

问题描述:

我有一个UIWebView加载在远程服务器上托管的页面。在准备好文档之后,它会向服务器发出一个异步的jQuery.ajax请求,以从服务器返回的值列表填充下拉列表。iOS 6 UIWebView委托方法

当它加载页面并执行此请求时,我有一个半透明的UIView和覆盖UIWebView的UIActivityIndi​​cator。我已经实现了删除加载视图的webViewDidFinishLoad委托方法。

  • 在iOS 4/5中,这个代理方法在异步请求完成后执行。这是我想要的行为。
  • 在iOS 6中,此委托方法在异步请求完成之前执行并且加载视图过早消失。

有谁知道这是故意的。任何想法如何解决这个问题?

谢谢!

+0

您确定请求得到执行吗?可能请求获取缓存,如下所述:[iOS 6上的Safari是否缓存$ .ajax结果?](http://*.com/questions/12506897/is-safari-on-ios-6-caching-ajax-results ) –

+0

感谢您的回应。 jQuery ajax请求使用jsonp,所以每次都有一个唯一的回调方法作为参数传递,所以它不应该缓存它。我还验证了使用代理的请求是每次200。服务器的缓存控制响应头也是“no-cache”。您提供的链接中的答案之一就是建议让“无缓存”解决问题。 –

+0

在beta更改日志中,我看到:在iOS 6及更高版本中,UIWebView类异步地绘制其内容。我想知道它与此有关吗? –

我得出的结论是,这是一个有意的变化。本质上,如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。