2013-02-01 87 views
1

我有一個應用程序與標準視圖控制器上有多個按鈕。每個按鈕鏈接到一個具有獨特UIWebView的獨立視圖控制器。每個UIWebView都實現了didFailLoadWithError,它似乎工作正常:當我關閉wifi,並嘗試從主視圖控制器頁面加載UIWebView時,我正確地從didFailLoadWithError獲取錯誤消息。當我打開wifi並加載UIWebView時,它工作正常 - 沒有錯誤。但是,當我點擊該UIWebView頁面中的鏈接時,我又收到了didFailLoadWithError錯誤。更有趣的是,我清除了錯誤消息,並且新頁面仍然從我剛剛點擊的鏈接加載,所以我知道連接是好的。這裏是我的實現...有沒有人知道強制didFailLoadWithError只能在第一次加載時運行一次的方法,並且在驗證Web連接是好的時候再次禁止它再次運行?didFailLoadWithError錯誤地報告沒有連接

@synthesize webView; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

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

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Network Alert" message:@"No Internet Connection - Please Check Your Network Settings and Try Again" delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil]; 
    [alert show]; 
} 


- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:  @"http://www.site.com/index.html"]]]; 
    [webView addSubview:activity]; 
    timer=[NSTimer scheduledTimerWithTimeInterval:(1.0/2.0) 
     target:self selector:@selector(loading) userInfo:nil repeats:YES]; 
      } 

- (void)loading { 
    if (!webView.loading) 
     [activity stopAnimating]; 
     else 
      [activity startAnimating]; 
} 
+0

我測試了一下,發現問題不在代碼或didFailLoadWithError例程中,但它是由特定鏈接引起的。出於某種原因,所有嘗試從UIWebView遵循以下鏈接都將導致didFailLoadWithError,但所有「正常」鏈接不會導致錯誤。這裏是有問題的鏈接:http://p.incmedia.incmediaservices.netdna-cdn.com/vod/incmedia.incmediaservices/003/800k/FTT_0014.mov – WarrenD

+0

我有同樣的問題,找到解決方案嗎? – John

回答

1

我剛剛有這個問題。發生了什麼事情是,當您點擊網頁視圖中的鏈接時,當頁面仍在加載時,您將收到錯誤-999。這轉換爲NSURLErrorCancelled

您可以通過以下鏈接瞭解更多信息。轉到URL Loading System Error Codes部分。 https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Constants/Reference/reference.html

在我的代碼中,我告訴一個警報視圖,彈出說在調用-webView:didFailLoadWithError:時互聯網連接丟失。我將該代碼包裝在錯誤對象的條件上。下面是一個例子。

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { 
    if ([error code] == NSURLErrorNotConnectedToInternet || [error code] == NSURLErrorNetworkConnectionLost) { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"Check internet connection." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil]; 
     [alert show]; 
    } 
} 
相關問題