我设置了一个带有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。
那我该如何 ?
答案 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会更好......