[iOS]UIWebView返回和NSURLErrorDomain-999

1.UIWebView实现返回不崩溃:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
    NSString * urlString = [[request URL] absoluteString];
    //    requestString = [requestString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    // http://mobi.sscp178.com/app/black;

// 1.判断后缀: if ([urlString hasSuffix:@"black;"]) { [_webView goBack]; } NSLog(@"requestring--------%@",urlString); return YES; }

在这里也可以这样:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
    NSString * urlString = [[request URL] absoluteString];
    //    requestString = [requestString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    // http://mobi.sscp178.com/app/black
    if ([urlString  containsString:@"black"]) {
                [_webView goBack];
    }
    NSString*login =@"applogin.html";
    if ([urlString containsString:login]) {
        [self dismissViewControllerAnimated:YES completion:nil];
    }
    NSLog(@"requestring--------%@",urlString);
    
    return YES;
}

2.忽略错误 NSURLErrorDomain-999 在 UIWebView 无法正常工作:

当网页返回,加断点,打印出来的error信息是:

Error Domain=NSURLErrorDomain Code=-999 “The operationcouldn’t becompleted.

   根本原因:

出现NSURLErrorDomain Code=-999的根本原因是什么呢?其实就是因为webview在之前的请求还没有加载完成,下一个请求发起了,此时webview会取消掉之前的请求,因此会回调到失败这里。

因此,在处理Webview的加载失败的回调时,要注意拦截掉被取消的请求。

解决方法:

在webview加载失败时,添加如下代码来判断: 

- (void)webView:(UIWebView *)webViewdidFailLoadWithError:(NSError *)error {
  [self stopAnimating];
  
  // 如果是被取消,什么也不干
  if([errorcode] == NSURLErrorCancelled)  {
    return;
  }
  
  // 后续失败处理
}

遇到一个问题,研究解决一个问题!今天是2017年3月27日,思思加油!

 
 
原文地址:https://www.cnblogs.com/pengsi/p/6627473.html