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日,思思加油!