2012-08-24 40 views
0

我使用NSURLRequestReloadIgnoringLocalAndRemoteCacheData的cachePolicy設置了一個UIWebView,並且一切都很好:當有連接時,UIWebView加載,並且沒有時,connection:didFailWithError:被調用,I有我的UIAlertView。NSURLRequest cachePolicy和UIWebView中的連接

但是,當我將cachePolicy更改爲NSURLRequestReturnCacheDataElseLoad(這是我實際需要的策略)時,在沒有連接的情況下,加載緩存頁面,然後在單擊鏈接時......沒有任何反應。沒有連接:didFailWithError:被調用。沒有UIAlertView。

我該如何解決這個問題?

編輯:或許我開始一個答案的....我至少可以識別在UIWebView中點擊一個鏈接時,請使用以下方法:

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

現在,而不是NSLogging「Blah!」我只需要讓它調用連接:didFailWithError。

那麼我該怎麼辦

回答

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.google.com取代http://www.homePageOfTheApp.com",因爲,即使我的主人具有非常可靠的服務器,我要去猜測,谷歌的甚至更好...