忽略NSURLErrorDomain错误-999不会UIWebView的工作(Ignoring NS

2019-07-05 04:47发布

我试图避免产生问题,而UIWebView的委托返回一个错误这样的。 我有共同的解决方法(我看到它在互联网的任何地方)在我的委托执行

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {

    if ([error code] == NSURLErrorCancelled) return;
}

我的问题是,这并不总是工作。 有时加载网页,另一个次加载网页的部分(标题,正文的一部分......),并几次不加载任何东西。

是否有任何其他的解决方案呢? 存在可以正常工作的浏览器的任何开源实现?

Answer 1:

从苹果的文档:

NSURLErrorCancelled(-999)

“时返回异步加载被取消。当它完成加载资源取消操作的Web Kit框架代表将收到此错误。请注意,如果取消下载一个NSURLConnection的或NSURLDownload代表将不会收到此错误。”

因此,最有可能的情况下,要做到这一点是你要加载一个请求,然后另一个(或同一个),第一个完成之前。 这可能发生。 例如,如果你调用loadRequest (或loadHTMLString中的方法等) viewDidAppear:可以多次调用。 这也被报道发生,如果您快速挖掘在2个链接UIWebView

所以,一般建议是检讨如何以及在哪里你打电话loadRequest (或loadHTMLString ),并可能提供一些代码。

为了解决这个问题,我会建议以下痕迹添加到您的Web视图代表:

- (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]);
}

如果您检查输出,你应该看得更清楚是怎么回事。 如果粘贴的输出,我们可以尝试进一步帮助您。



Answer 2:

与NSURLConnection的或UIWebView的工作时,大多数时候,这种错误是由于超时。 可能真的不是你的代码,但您的连接。



文章来源: Ignoring NSURLErrorDomain error -999 does not work in UIWebView
标签: ios uiwebview