忽略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时,这个错误是由于超时。 可能真的不是你的代码,而是你的连接。