2013-05-29 35 views
0

在我正在编写的应用程序中,我检查设备是否具有Internet连接。我在屏幕上放置了连接错误图像,并将其隐藏,除非设备未连接。虽然有一个奇怪的问题。我为UIWebView实现了一个简单的后退按钮,但是当我按它太快时,会发生连接错误。下面是代码,我用它来检查连接,并决定是否显示错误:当浏览速度太快时发生连接错误

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

    _connectionError.hidden = NO; 
} 

所以,我认为解决这个问题的唯一办法是把它检查是否有一个连接一次,只有当应用程序首次启动时,并且在剩下的时间内再也不会运行。我对Objective-C非常陌生,不知道如何去做。我在想,我应该把一些东西放在viewDidLoad中,或者实现某种方法让方法只运行一次,但我不知道该怎么做。

下面是后退按钮的代码:

- (IBAction)backButtonTapped:(id)sender { 
    [_viewWeb goBack]; 
} 
+0

如何实现后退按钮?你能发布你的代码吗? –

+0

@verbumdei是的,我刚刚发布了它。 – John

+0

这可能是相关的:http://stackoverflow.com/questions/9235485/reusing-uiwebview-is-causing-crashes并尝试设置[_viewWeb stopLoading];在调用goBack方法之前。 –

回答

1

呼吁GoBack方法之前web视图的方法stopLoading,以确保不存在多个请求去这可能会导致连接错误:

- (IBAction)backButtonTapped:(id)sender { 
    [_viewWeb stopLoading]; 
    [_viewWeb goBack]; 
} 
1

要检查,你可以在你的项目中使用Reachability的连接。然后,您可以使用this答案查看如何使用它。这比使用UIWebview更高效和更清晰。

+0

感谢您的回答。看起来Reachability使用推送通知来显示消息,这是否正确? – John

+0

它不是必须的。你可以检查if(([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] == NotReachable))'例如,检查是否有可用的互联网连接。这可以在导入'Reachability.h'后从任何地方检查。 – jfuellert

+0

@Oral B我应该补充一点,您可以在尝试实际加载网页之前尝试使用此方法;这样做可以为你节省一些麻烦 – jfuellert