【问题标题】:HTML links that close UIWebView关闭 UIWebView 的 HTML 链接
【发布时间】:2011-11-04 12:22:25
【问题描述】:

我有一个带有几个链接的普通 HTML 页面。 当在 UIWebView 中加载此 html 页面并单击链接时,它应该在 safar 而不是 UIWebView 中打开。

我认为我不能使用此代码:

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

...因为它是用于应用程序的,它不能在 html 页面上运行,对吧?

谢谢 M.

【问题讨论】:

    标签: iphone html uiwebview safari


    【解决方案1】:

    通常,当您想在 Safar 中打开链接时,我会这样做 -

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

    但是因为你在UIWebView 你不能这样做。

    为此,您需要做的是实现UIWebViewshouldStartLoadWithRequest 代表。每当在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; 
    }
    

    因此,上面的代码会打开在外部 Safari 或邮件应用程序中打开的每个 http://, https://, and mailto:// URL。

    还只有选择的 URL 启动 Safari,您可以将它们的方案从 http:// 更改为 safari:// 或类似的东西,并且只将这些 URL 踢到系统(在用 http:// 替换自定义 URL 方案之后)。

    我在我的内部帮助文档中执行此操作,该文档是在 UIWebView 中显示的 HTML,因此在我的应用程序中嵌入通用 Web 浏览器时,我不会在审核过程中遇到问题。

    【讨论】:

      【解决方案2】:

      使用这个

        -(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;
          }
      

      【讨论】:

        猜你喜欢
        • 2016-07-14
        • 2014-09-22
        • 1970-01-01
        • 1970-01-01
        • 2017-01-19
        • 2013-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多