2011-08-11 13 views
9

Mam UIViewController, który jest UIWebViewDelegate i ma wewnątrz niego UIWebView. Próbuję załadować konkretny adres URLdidFailLoadWithError jest wywoływany z UIWebView, mimo że strona później ładuje

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

Ale metoda didFailLoadWithError delegat jest niemal natychmiast nazywa, a obiekt błędu:

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} 

Jednak krótko po tym, można zobaczyć, że na stronie internetowej ładuje się dobrze.

Dlaczego wywoływana jest metoda fail? I skąd mam wiedzieć, kiedy faktycznie się nie powiodło, a kiedy metoda została wywołana, niezależnie od tego, czy strona rzeczywiście się nie powiodła, czy nie?

+0

mam ten sam błąd, ponieważ po raz pierwszy byłem użycie url i drugi raz załadować url1. Może to pomoże każdemu. –

Odpowiedz

37

można uzyskać ten błąd, gdy strona zostanie natychmiast przekierowany za pośrednictwem javascript lub jakiś inny

Można uniknąć pokazując błąd poprzez odpowiedź stąd: How do I fix NSURLErrorDomain error -999 in iPhone 3.0 OS

jak

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

ale nie wiem, jak rozpoznać, gdzie został wywołany.

+1

'if ([kod błędu]! = NSURLErrorCancelled) {// pokaż komunikat o błędzie, itp.}" URL powinien być cały czapki :) –

+0

@YasKuraishi dzięki za zauważenie –

+0

@MarekSebera świetna robota +1 – iLearner

0

Zgodnie z innym numerem StackOverflow question from a while back, kod błędu, który otrzymujesz, jest spowodowany przez żądanie wysłane przed zakończeniem poprzedniego żądania.

Co może się zdarzyć, to że wykonujesz wiele połączeń jednocześnie/bardzo szybko, a jeden się powtarza (więc twoja strona się ładuje), ale druga się nie udaje.

-1

Zastosowanie TapGesture na widoku strony internetowej przy użyciu tapcount z 1. użyciu funkcji do obsługi TapGesture, sprawdź, czy adres URL zwraca kod statusu 200, a jeśli tak, zadzwoń poniższą funkcją

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

I, stosując funkcja delegata,

-(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]; 
} 

Nadzieja to pomaga :)

+0

To nie odpowiada pytanie – miniBill

Powiązane problemy