2011-01-13 50 views
3

在我的iPhone應用程序中,我在webview中顯示一個網頁。 我實現委託方法如下:iPhone - UIWebView - 在頁面加載之前單擊URL使didFailLoadWithError引發錯誤

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 
{ 
    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Error loading the requested URL" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
} 

當過我打開一個URL和加載半頁,我馬上點擊網頁中的其他一些鏈接。那時候,這個委託方法正在被調用。 當網頁加載一半並單擊URL鏈接時,應如何防止調用委​​託方法。

或者其他一些解決方案可以在單擊某個URL時調用stopLoading。我怎樣才能做到這一點?

回答

2

當網頁加載一半並單擊URL鏈接時,應如何防止調用委​​託方法。

您無法真正阻止該方法被調用 - 但您可能能夠檢查error對象的屬性以確定您得到的錯誤類型。

或者其他一些解決方案可以在單擊某個URL時調用stopLoading。我怎樣才能做到這一點?

您可以使用webView:shouldStartLoadWithRequest:navigationType:當用戶需要某種導航處理​​將被稱爲(例如點擊一個鏈接,提交表單等,您可以使用navigationType來確定哪些行爲是)。應該可以從那裏調用stopLoading(儘管webView可能仍然會調用webView:didFailWithError:方法,但我不確定...請參閱第一部分,瞭解如何處理該問題)。

4

錯誤代碼NSURLErrorCancelled通知您URLLoadingSystem'已停止加載'。例如,當用戶單擊僅加載一半的頁面中的鏈接時,就會發生這種情況...... URLLoadingSystem將其停止,因此您不需要。

- (void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 
{ 
    // If the URLLoadingSystem cancelled the load don't show anything. 
    if ([error code] == NSURLErrorCancelled) 
    { 
     //...this is called when the load is cancelled... 
    } 
    else 
    { 
     //...handle the error and show the alert ... 
    } 
}