我有一个小的嵌入式UIWebView用于我的app部分。当用户点击那里的链接时,链接将在那个小的嵌入式UIWebView中打开,当然它没有导航控件而且不是全屏。我不喜欢那样。我可以强制它打开与Safari的链接吗?
答案 0 :(得分:2)
您可以实现UIWebViewDelegate协议的shouldStartLoadWithRequest
方法来拦截链接点击。在该方法中,您可以使用UIApplication的openURL
方法在相应的应用程序中打开URL(即Safari for HTTP / HTTPS)。
- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *url = [request URL];
if ([url isEqual:YOUR_HOME_URL_CONTSTANT])
return YES;
[[UIApplication sharedApplication] openURL:url];
return NO;
}
答案 1 :(得分:0)
您应该实现UIWebViewDelegate的shouldStartLoadWithRequest
。在这里,您可以看到UIWebView何时开始加载URL。然后你可以处理哪个应该在这个webView中加载,哪些应该由Safari加载。
我的代码如下:
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType
{
if (inType != UIWebViewNavigationTypeLinkClicked)
{
//This was not a clicked link, so is probably the initial load
//and should be loaded in the UIWebView
return YES;
}
//This was a clicked link, so load using Safari
[[UIApplication sharedApplication] openURL:[inRequest URL]];
return NO;
}
我在这里使用UIWebViewNavigationType
来确定它是否是链接点击,并做出适当的响应。