0

我注意到我的网页视图中有一个奇怪的错误。我有一个应用程序可以检查设备是否已连接到互联网,如果已连接,则错误图像仍然隐藏。如果未连接,我将取消隐藏错误图像。问题是,如果我在页面完成加载之前尝试单击另一个链接,则会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:只能在应用程序启动时运行一次?

4

2 回答 2

1

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

于 2013-05-29T21:29:04.863 回答
1

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

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

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

于 2013-05-29T02:38:58.320 回答