让 `didFailLoadWithError:` 在启动时只运行一次

Posted

技术标签:

【中文标题】让 `didFailLoadWithError:` 在启动时只运行一次【英文标题】:Having `didFailLoadWithError:` only run once on startup 【发布时间】:2013-05-29 15:20:45 【问题描述】:

如果我在页面完成加载之前尝试单击另一个链接,didFailLoadWithError: 会触发并取消隐藏我隐藏的连接问题图像。这是我正在使用的代码:

- (void)webViewDidFinishLoad:(UIWebView *)webView 
    NSLog(@"didFinish: %@; stillLoading:%@", [[webView request]URL],
          (webView.loading?@"NO":@"YES"));


-(void)webView:(UIWebView *)myWebView didFailLoadWithError:(NSError *)error 

    NSLog(@"No internet connection");
    _connectionError.hidden = NO;

有没有人知道一种快速的方法,让它只在应用启动时运行一次,并且在其余时间不再运行?

【问题讨论】:

【参考方案1】:

这是每次失败时都会触发的委托方法..

试试这样的。 (在 header 中创建一个名为 firstTimeRun 的 BOOL)

-(void)webView:(UIWebView *)myWebView didFailLoadWithError:(NSError *)error 

    if (firstTimeRun) 

        _connectionError.hidden = NO;
        firstTimeRun = NO;
    

如果您只想在第一次加载时使用,请记住在加载网站时将 firstTimeRun 设置为 NO。

编辑:

在您的头文件 (.h) 中编写以下内容

@interface ... 

@property BOOL firstTimeRun;


您可能需要在方法中的某处使用 NO 对其进行初始化。您需要先发布课程的 .h 和 .m 文件,然后我才能为您提供更多帮助。

【讨论】:

非常感谢,帮了大忙。不过,我对 Objective-c 还是很陌生,你知道我的 firstTimeRun 应该是什么样子吗?

以上是关于让 `didFailLoadWithError:` 在启动时只运行一次的主要内容,如果未能解决你的问题,请参考以下文章

iOS 9.2.1 获取 webView:didFailLoadWithError - 102:Phonegap 中的帧加载中断

iPhone - UIWebView 在没有数据连接的情况下不调用 didFailLoadWithError

swift uiwebview NSErrorFailingURLStringKey

检测 UIWebView 何时加载引用文件失败

iOS标头中的WebKit错误域和代码?

对 UIWebView 错误进行分类并在 iphone 应用上显示?