如何使用Safari应用程序在UIWebView中启动链接?

时间:2010-10-19 21:09:27

标签: iphone ipad uiwebview

我有一个小的嵌入式UIWebView用于我的app部分。当用户点击那里的链接时,链接将在那个小的嵌入式UIWebView中打开,当然它没有导航控件而且不是全屏。我不喜欢那样。我可以强制它打开与Safari的链接吗?

2 个答案:

答案 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来确定它是否是链接点击,并做出适当的响应。