`didFailLoadWithError:`问题

时间:2013-05-29 02:20:51

标签: ios objective-c uiwebview internet-connection

我在网络视图中发现了一个奇怪的错误。我有一个应用程序,检查设备是否已连接到互联网,如果已连接,则错误图像保持隐藏状态。如果没有连接,我取消隐藏错误图像。问题是,如果我在页面加载完成之前尝试单击另一个链接,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;
}

如果我等到日志中看到“仍在加载”,然后按另一个链接,一切都很好。如果我在看到该消息之前按下链接,则didFailLoadWithError:将触发并取消隐藏连接问题。我对Objective-C和编程都很新,所以我不知道如何解决这个问题。

有什么简单的说法我只能在应用启动时运行一次didFailLoadWithError:吗?

2 个答案:

答案 0 :(得分:1)

每次加载Web视图时都会调用didFailLoadWithError,当您尝试在当前页面加载完成之前加载另一个页面时会发生这种情况。

您应该尝试其他方法来检测是否没有互联网连接,例如使用可达性:http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html

另一种方法是简单地在webView中调用stopLoading:shouldStartLoadWithRequest:navigationType:当用户点击另一个链接而前一个链接仍然在Web视图中加载时触发didFailLoadWithError的特定情况的委托方法。

答案 1 :(得分:1)

我使用的解决方案是检查错误代码。如果代码等于连接错误,那么我取消了错误图像。