最近在开发一个IOS应用应用到webview控件加载网页,问题来了,webview加载网页是需要时间的,如果用户操作比较快,出现一个load页面没有加载完毕的就进入下一个的话,那么就会进入:
func webView(webView: UIWebView, didFailLoadWithError error: NSError) {
//TODO
}
问题就在这里了,由于我的写的代码,如果报错,我给予他一个返回的页面。这样的代码,每次就出现,如果用户操作特别频繁,一个页面没有加载完毕就进入下一个页面,这时候,
func webView(webView: UIWebView, didFailLoadWithError error: NSError) {
的error 加载失败返回 nsurlerrordomain -999 的
从苹果公司的文档:
NSURLErrorCancelled (-999)
"当异步加载取消返回。当它执行取消操作上加载资源时,Web 工具包框架委托将收到此错误。请注意,NSURLConnection 或 NSURLDownload 委托不会收到此错误如果取消下载。"
所以,最有可能为这种情况发生的情况为您加载请求,然后另一个 (或相同),第一完成之前。这可能发生。例如,如果调用 loadRequest (或 loadHTMLString ) 这样的方法在 viewDidAppear: 可以调用多次。这也据报发生如果你快速点击 2 链接在 UIWebView 。
那么怎么解决这个问题呢。
其实,我们只要忽略他就可以了,
func webView(webView: UIWebView, didFailLoadWithError error: NSError) {
if error.code == NSURLErrorCancelled {
return ; //忽略这个错误。
}
网友评论