2011-11-04 77 views
1

我有一個正常的HTML頁面,只有幾個鏈接。 當這個html頁面被加載到UIWebView中,並且鏈接被點擊時,它應該在safar中打開,而不是在UIWebView中打開。關閉UIWebView的HTML鏈接

我想我不能使用此代碼:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    // NSLog(@"shouldStartLoadWithRequest Loading: %@", [request URL]); 
    return TRUE; 
} 

...因爲它是應用程序,它不會html頁面上工作,對不對?

感謝名單 M.

回答

2

通常,當你想打開薩法爾鏈接我這樣做 -

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://www.google.co.uk"]];

但因爲你是在UIWebView你不能做到這一點。

因此,你需要做的是實現shouldStartLoadWithRequest代表UIWebView。只要在UIWebView中點擊鏈接,就會調用該代理。現在你可以決定做你想做的。在這種情況下,你想在Safari中打開這個鏈接。因此,代碼是這樣的,以報價 -

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSURL *requestURL =[[ request URL ] retain]; 
    if (([[ requestURL scheme ] isEqualToString: @"http" ] || 
     [[ requestURL scheme ] isEqualToString: @"https" ] || 
     [[ requestURL scheme ] isEqualToString: @"mailto" ]) 
     && (navigationType == UIWebViewNavigationTypeLinkClicked)) 
    { 
     return ![[ UIApplication sharedApplication] openURL: [requestURL autorelease]]; 
    } 
    [requestURL release]; 
    return YES; 
} 

所以上面的代碼打開每個http://, https://, and mailto:// URL外部Safari或郵件應用程序打開。

也有隻能選擇網址推出Safari瀏覽器,你可以從http改變他們的計劃://到safari://或類似的東西,只踢那些網址,關閉系統(帶http://更換自定義URL方案後)。

我在我的內部幫助文檔中完成這項工作,該工具將HTML顯示在UIWebView中,以便在應用程序中嵌入通用Web瀏覽器時不會遇到審閱過程中的問題。

0

使用這一個

-(BOOL)webView:(UIWebView *)webView1 shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ 

     NSURL *requestURL = [[ request URL] retain]; 
     NSString *str_url=[NSString stringWithFormat:@"%@",requestURL]; 
     if([str_url isEqualToString:@"about:blank"]){ 
      [requestURL release]; 
      return YES; 
     }else{ 
       [[UIApplication sharedApplication] openURL:requestURL]; 
     } 
     [requestURL release]; 
     return NO; 
    }