即使页面稍后加载,也会使用UIWebView调用didFailLoadWithError

时间:2011-08-11 15:14:12

标签: iphone xcode ipad uiwebview

我有一个UIViewController,它是一个UIWebViewDelegate,里面有一个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}

然而,在很短的时间之后,您可以看到网站加载得很好。

为什么要调用fail方法?而且无论网站是否真的失败,我怎么知道实际失败的时间与调用方法的时间有关?

3 个答案:

答案 0 :(得分:38)

当页面立即通过javascript或其他方式重定向时,您可能会收到此错误

您可以通过此处的回答来避免显示错误:How do I fix NSURLErrorDomain error -999 in iPhone 3.0 OS

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

但我不知道如何识别调用它的位置。

答案 1 :(得分:0)

因此,根据另一个StackOverflow question from a while back,您获得的错误代码是由上一个请求完成之前发出的请求引起的。

可能发生的事情是你正在同时/非常迅速地进行多个电话,一个正在成功(所以你的网页加载)但另一个正在失败。

答案 2 :(得分:-1)

使用tapcount为1在Web视图上使用TapGesture。 使用函数处理TapGesture,检查URL是否返回状态代码200,如果是,请调用以下函数

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

希望有所帮助:)