0

我用 NSURLRequestReloadIgnoringLocalAndRemoteCacheData 的 cachePolicy 设置了一个 UIWebView,一切都很好:当有连接时,加载了 UIWebView,当没有连接时,调用了 connection: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 “废话!” 我只需要让它调用connection:didFailWithError。

那么我该怎么做呢?

4

1 回答 1

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.comsince,即使我的主机拥有非常可靠的服务器,我猜谷歌的服务器会更好......

于 2012-08-24T04:44:42.053 回答