为什么忽略UIWebView锚点的目标?

时间:2012-09-18 11:44:14

标签: iphone ios uiwebview mobile-safari

我正在开发的iPhone应用程序中嵌入UIWebView。 我试图通过在锚点上使用target =“_ blank”来在Safari中打开链接。

我发现UIWebView忽略了目标属性,链接无法在新的Safari实例中打开。那是为什么?

我知道为了完成这项工作,我必须使用shouldStartLoadWithRequest

2 个答案:

答案 0 :(得分:2)

您应该使用openURL让Safari从您的应用中打开网页:

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://..."]];

如果你想"拦截"点击指定链接并使用该网址打开Safari,您可以使用shouldStartLoadWithRequest。我建议您为自己的网址协议使用自定义方案,以便区分应在Safari中打开的链接与可以在UIWebView中打开的链接:

 - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
if ([[[request URL] scheme] isEqual:@"safari"])
    [[UIApplication sharedApplication] openURL:[NSURL stringByReplacingOccurrencesOfString:@"safari://" withString:@"http://"]];

 }

在这种情况下,您可以在HTML页面中将您的网址指定为" safari://..."

否则,只需致电openURL即可将完整的网址传递给它。

答案 1 :(得分:0)

也许你可以尝试类似的东西:

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