2013-05-29 51 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