iOS-webView请求失败后处理

由于iOS的webView对于400、404等错误不算做请求失败,加载失败后是失败界面,这样会很不好看, 所以我们需要手动拦截请求返回的错误码,来添加加载失败的界面。

//webView的回调方法中实现
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
    
    NSHTTPURLResponse *response = nil;
    [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
    
    if (response.statusCode == 200) {
        self.noMessageLabel.hidden = YES;
        return YES;
    }
    self.noMessageLabel.hidden = NO;
    return NO;
}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
     self.noMessageLabel.hidden = NO;
}

//刷新、重载
- (void)refreshBtnClick
{
    self.url = _url;
}

- (NOMessageView *)noMessageLabel{
    
    if (!_noMessageLabel) {
        _noMessageLabel = [[NOMessageView alloc] initWithFrame:CGRectMake(0, (webView.height - 200) / 2, kW, 200)];
        _noMessageLabel.imageView.image = CommomImage(@"no_network_icon");
        _noMessageLabel.messageLabel.text = @"网络异常,刷新试试";
        [_noMessageLabel.refreshBtn addTarget:self action:@selector(refreshBtnClick) forControlEvents:UIControlEventTouchUpInside];
        _noMessageLabel.refreshBtn.hidden = NO;
        [webView addSubview:_noMessageLabel];
        [webView bringSubviewToFront:self.noMessageLabel];
    }
    return _noMessageLabel;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,179评论 25 708
  • WebView·开车指南 目录 WebView简介 WebView基本使用 WebView常用方法 WebSett...
    小庄bb阅读 3,536评论 3 25
  • WebView·开车指南 目录 WebView简介 WebView基本使用 WebView常用方法 WebSett...
    南城的人阅读 4,779评论 0 19
  • 当唱到第二首的时候,室友拉着阿和走了过来。在操场阴暗不明的灯光下,依稀看出那边一群人围着那边几个帅气小伙在那里表演...
    乱巷弄里阅读 413评论 0 0
  • 本次演讲,查理使用了他在演讲中推荐的逆向思维原则,令人信服地从反面阐述了一名毕业生如何才能过上痛苦的生活。不得...
    俞mm阅读 265评论 0 0