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

最佳答案

每当Web视图加载失败时,就会调用didFailLoadWithError,这是在您尝试在当前页面完成加载之前尝试加载另一个页面时发生的。

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

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

08-06 04:11