UIURView中的NSURLRequest cachePolicy和连接

时间:2012-08-24 01:07:15

标签: objective-c ios5 xcode4.4

我设置了一个带有NSURLRequestReloadIgnoringLocalAndRemoteCacheData的cachePolicy的UIWebView,一切都很好:当有连接时,加载了UIWebView,当没有连接时,连接:didFailWithError:被调用,我得到了我的UIAlertView。

但是当我将cachePolicy更改为NSURLRequestReturnCacheDataElseLoad(这是我真正想要的策略)时,如果没有连接,则会加载缓存页面,然后,当我点击链接时......没有任何反应。没有连接:didFailWithError:调用。没有UIAlertView。

我该如何解决这个问题?

编辑:也许我有一个答案的开头 ....我至少可以使用以下方法确定点击UIWebView中的链接的时间:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)req navigationType: (UIWebViewNavigationType)navigationType
{
    if (navigationType==UIWebViewNavigationTypeLinkClicked)
    {
        NSLog(@"Blah!");
    }
    return YES;
}

现在,而不是NSLogging“Blah!”我只需要调用connection:didFailWithError。

那我该如何

1 个答案:

答案 0 :(得分:0)

我做到了!

我添加了这段代码:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)req navigationType:(UIWebViewNavigationType)navigationType
{
    if (navigationType==UIWebViewNavigationTypeLinkClicked)
    {
        NSURL *scriptUrl = [NSURL URLWithString:@"http://www.homePageOfTheApp.com"];
        NSData *data = [NSData dataWithContentsOfURL:scriptUrl];
        if (data == nil)
        {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error title." message:@"Error message." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alert show];
        }
    }
return YES;

}

虽然我可能会将http://www.homePageOfTheApp.com"替换为http://www.google.com,因为即使我的主机拥有非常可靠的服务器,我也会猜测Google会更好......