2011-08-11 42 views
9

Tôi có một UIViewController là một UIWebViewDelegate và có một UIWebView bên trong nó. Tôi cố gắng để tải một URL cụ thểdidFailLoadWithError được gọi với UIWebView mặc dù trang sau tải

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

Nhưng phương pháp didFailLoadWithError đại biểu gần như ngay lập tức gọi, và đối tượng lỗi là:

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} 

Tuy nhiên một thời gian ngắn sau đó, bạn có thể thấy rằng các trang web tải tốt.

Tại sao phương pháp thất bại được gọi? Và làm thế nào để tôi biết khi nào nó thực sự thất bại so với khi phương thức được gọi là bất kể trang web có thực sự thất bại hay không?

+0

tôi đã cùng một lỗi vì lần đầu tiên tôi sử dụng url và lần thứ hai tôi tải url1. Có lẽ nó sẽ giúp cho bất cứ ai. –

Trả lời

37

Bạn có thể nhận được lỗi này khi trang được ngay lập tức chuyển hướng qua javascript hoặc bằng cách nào đó khác

Bạn có thể tránh hiển thị lỗi bằng câu trả lời từ đây: How do I fix NSURLErrorDomain error -999 in iPhone 3.0 OS

như

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

nhưng tôi không biết cách nhận ra nơi nó được gọi.

+1

'if ([mã lỗi]! = NSURLErrorCancelled) {// hiển thị cảnh báo lỗi, v.v.} 'URL phải là tất cả mũ :) –

+0

@YasKuraishi cảm ơn vì đã chú ý –

+0

@MarekSebera công việc tuyệt vời +1 – iLearner

0

Vì vậy, theo một mã khác StackOverflow question from a while back, mã lỗi mà bạn đang nhận được gây ra bởi yêu cầu được thực hiện trước khi yêu cầu trước đó được hoàn thành.

Điều có thể xảy ra là bạn đang thực hiện nhiều cuộc gọi cùng một lúc/rất nhanh và một cuộc gọi đang thành công (do đó trang web của bạn tải) nhưng trang kia không thành công.

-1

Sử dụng TapGesture trên xem web bằng tapcount của 1. Sử dụng một chức năng để xử lý TapGesture, kiểm tra xem URL trả về mã trạng thái 200, nếu như vậy, gọi hàm dưới

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

Và, sử dụng chức năng đại diện,

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

Hy vọng nó sẽ giúp :)

+0

Điều này không trả lời câu hỏi – miniBill

Các vấn đề liên quan