我试图避免在UIWebView
委托返回类似错误时生成的问题.我在委托实现中有共同的解决方法(我在Internet的任何地方都看到过)
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
if ([error code] == NSURLErrorCancelled) return;
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,这并不总是有效.有时加载网络,另一次加载网页的一部分(标题,文本的一部分......),并且几次不加载任何东西.
还有其他解决方案吗?存在任何正常运行的浏览器的开源实现?
ser*_*gio 11
来自Apple文档:
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]);
}
Run Code Online (Sandbox Code Playgroud)
如果检查输出,您应该更清楚地看到发生了什么.如果您粘贴输出,我们可以尝试进一步帮助您.
归档时间: |
|
查看次数: |
9621 次 |
最近记录: |