2011-08-11 46 views
9

我有一個UIViewController這是一個UIWebViewDelegate並具有一個UIWebView裏面。我試圖加載特定的URLdidFailLoadWithError與UIWebView調用即使頁面後加載

NSURL *url = [NSURL URLWithString:urlAddress]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
    [webView loadRequest:requestObj]; 
    [self.view addSubview:webView]; 
    [webView release]; 

didFailLoadWithError委託方法幾乎是瞬間調用,和錯誤的對象是:

Did fail load with error: Error Domain=NSURLErrorDomain Code=-999 "The operation couldn’t be completed. (NSURLErrorDomain error -999.)" UserInfo=0x1a66c0 {NSErrorFailingURLKey=www.somewebsite.com, NSErrorFailingURLStringKey=www.somewebsite.com} 

但是之後很短的時間,你可以看到網站加載就好了。

爲什麼要調用失敗方法?我怎麼知道它的實際失敗時間與何時調用方法無關,而不管網站是否實際失敗?

+0

我得到了同樣的錯誤,因爲我第一次使用URL和第二次我打開網址1。也許這對任何人都有幫助。 –

回答

37

你可以得到網頁時立即通過JavaScript重定向或這個錯誤在某種程度上其他

可避免顯示錯誤的答案從這裏:How do I fix NSURLErrorDomain error -999 in iPhone 3.0 OS

if ([error code] != NSURLErrorCancelled) { //show error alert, etc. } 

,但我不知道如何識別它被調用的地方。

+1

'if([error code]!= NSURLErrorCancelled){//顯示錯誤警報等}'URL應該全部大寫:) –

+0

@YasKuraishi感謝您的注意 –

+0

@MarekSebera很棒的工作+1 – iLearner

0

因此,根據另一個StackOverflow question from a while back,您收到的錯誤代碼是由前一個請求完成之前的請求導致的。

可能發生的情況是,您正在同時/非常迅速地進行多個呼叫,並且一個成功(因此您的網頁加載),但另一個失敗。

-1

使用TapGesture使用的1 使用處理TapGesture功能tapcount,檢查URL返回200狀態碼,如果這樣的Web視圖,調用這個函數的

-(void)animateme{ 
    NSString *urlAddress = Connecting_URL 
    NSURL *url = [NSURL URLWithString:urlAddress]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
    [self.webview loadRequest:requestObj]; 
} 

,並使用委託功能,

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Device in offline" message:@"Please check your internet connection" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil]; 
     [alert show]; 
} 

希望它能幫助:)

+0

這並不回答題 – miniBill