忽略NSURLErrorDomain错误-999在UIWebView中不起作用

我试图避免产生的问题,而UIWebView的委托返回这样的错误。 我有我的委托实现中的常见解决方法(我看到它在互联网上的任何地方)

 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { if ([error code] == NSURLErrorCancelled) return; } 

我有的问题是,这不总是工作。 有时加载网页,另外一次加载部分网页(页眉,文本的一部分…),几次不加载任何东西。

有没有其他的解决办法呢? 存在任何可以正常工作的浏览器的开源实现?

从Apple文档:

NSURLErrorCancelled(-999)

“当一个asynchronous加载被取消时返回一个Web Kit框架委托在加载资源上执行取消操作时会收到这个错误,注意NSURLConnection或者NSURLDownload委托在下载被取消时不会收到这个错误。

所以,最可能发生的情况是在第一个请求完成之前加载请求,然后再加载另一个请求(或同一个请求)。 这可能发生。 例如,如果您在像viewDidAppear:可多次调用的方法中调用loadRequest (或loadHTMLString )。 如果您快速点击UIWebView 2个链接,也会发生这种情况。

所以,一般的build议是查看如何调用loadRequest (或loadHTMLString ),并可能提供一些代码。

为了解决这个问题,我build议将以下跟踪添加到您的网页视图委托:

 - (void)webViewDidStartLoad:(UIWebView *)webView { NSLog(@"Starting to download request: %@", [webView.request.URL absoluteString]); } - (void)webViewDidFinishLoad:(UIWebView *)webView { NSLog(@"Finished downloading request: %@", [webView.request.URL absoluteString]); } - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { if ([error code] == NSURLErrorCancelled) NSLog(@"Canceled request: %@", [webView.request.URL absoluteString]); } 

如果你检查输出,你应该更清楚地看到发生了什么事情。 如果您粘贴输出,我们可以尝试并帮助您进一步。

大多数时候使用NSURLConnection或UIWebView时,这个错误是由于超时。 可能真的不是你的代码,而是你的连接。