我正在开发的iPhone应用程序中嵌入UIWebView
。
我试图通过在锚点上使用target =“_ blank”来在Safari中打开链接。
我发现UIWebView
忽略了目标属性,链接无法在新的Safari实例中打开。那是为什么?
我知道为了完成这项工作,我必须使用shouldStartLoadWithRequest
。
答案 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"]];