UIWebView和超时

时间:2011-04-26 09:10:11

标签: iphone cocoa-touch uiwebview timeout uiwebviewdelegate

我正在使用UIWebView来显示一些内容。在此内容中,用户可以浏览使用AJAX加载的一堆站点。这个网站上的一步需要相当长的一段时间。由于我没有找到关于UIWebView的时间的任何内容,所以我尝试将其设置在它加载的初始NSURLRequest上。

不幸的是,这似乎没有做任何事情。我不太确定我是否应该自己设置超时?有什么我想念的吗? UIWebView是否覆盖了我的超时?我对此有点困惑所以任何帮助都会受到赞赏。 :)

最佳
-f

更新

我建立了一个测试项目来验证UIWebView如何处理超时的“理论”。这是设置:

  • 一个名为sleep.php的PHP文件,它有一个参数,我可以用它来配置睡眠时间直到它发送结果
  • 一个带有单个视图的Xcode项目,它是一个加载sleep.php的webView,如下所示:

    NSURLRequest * request = [NSURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageAllowed timeoutInterval:10]; [webView loadRequest:request];

因此,在使用秒参数时,我可以看到UIWebView正常工作。根据超时情况,我得到webViewDidFinishLoad:webView:didFailLoadWithError:

在验证timeoutInterval按照宣传的方式工作后,我带了一个proxy.php(它有两个指向sleep.php配置为5和15秒的链接),看看我的请求配置是否仍然对新的有效要求。我更改了初始NSURLRequest以使用proxy.php,但将10秒配置保留为超时。

当我启动应用程序时,正在显示两个链接。当我点击第一个时,它会在5秒后按预期加载。不幸的是,第二个链接也会在15秒后加载。

所以我第一次尝试重新配置NSURLRequest就是在webView:shouldStartLoadWithRequest:navigationType:中更改它。不幸的是,Web服务与AJAX一起使用,因此不会调用委托方法。

还有其他建议吗?有没有办法全局配置整个UIWebView的超时值?

最佳
-f

2 个答案:

答案 0 :(得分:2)

您可能有兴趣使用自己的自定义UIWebView观看webViewDidFinishLoading代理NSTimer

此外,如果您遇到问题,直到服务器获得回复,您可以设置NSURLConnection 的超时 requestWithURL:cachePolicy:timeoutInterval:

答案 1 :(得分:-1)

我发现UIWebView一遍又一遍地使用相同的NSURLRequest。所以我的答案是,无法全局配置UIWebView的超时。