【问题标题】:Xcode Open target=_blank links in SafariXcode 在 Safari 中打开 target=_blank 链接
【发布时间】:2012-07-06 10:44:20
【问题描述】:

我对 Xcode 很陌生...我有一个单页 iOS 应用程序,它只有一个 UIWebView 打开一个特定的 URL。我希望页面中具有target="_blank" 的任何链接在 Safari 中打开,而不是在应用程序中打开。

谁能告诉我如何做到这一点? (我到处搜索)并告诉我在哪些文件中以及将代码放在哪里?非常感谢!

编辑

我在 ViewController.m 文件中实现了以下代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    // Add line below so that external links & PDFs will open in Safari.app
    webView.delegate = self;

    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.example.com/"]]];

}

// Add section below so that external links & PDFs will open in Safari.app
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if (navigationType == UIWebViewNavigationTypeLinkClicked) {
        [[UIApplication sharedApplication] openURL:request.URL];
        return false;
    }
    return true;
}

但是对于webView.delegate = self; 行,我收到一条黄色警告,上面写着: 从不兼容的类型“UIWebViewViewController *const_strong”分配给“id”

这是什么错误,如何在 Xcode 中修复它?

【问题讨论】:

    标签: xcode uiwebview external-links


    【解决方案1】:

    也许以下关于 SO 的答案可以解决您的问题,或者至少为您提供一些关于如何实现您想要做的事情的想法: UIWebView open links in Safari

    【讨论】:

    • 我在上面的原始问题中更新的代码对我有用,但你能帮我解决这个错误吗?
    • Webview webView.delegate 的委托属性是 id<UIWebViewDelegate> 类型,它与 ViewController 的 self 类型不匹配(在你的情况下,我认为类名是 UIWebViewViewController,这个是基于您评论中的例外情况)。您可以通过一种或两种方式解决此问题:使用以下方式键入Self webView.delegate = (id)self; 或在类(.h 文件)@interface ViewController : UIViewController <UIWebViewDelegate> 中声明委托。如果这没有帮助,请告诉我。
    【解决方案2】:

    这是我们解决它的方法:

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        first.delegate = (id)self;
                    [first loadRequest:[NSURLRequest requestWithURL:[NSURL      URLWithString:@"http://www.website.com"]]];
    }
    
    // Add section below so that external links & PDFs will open in Safari.app
    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request     navigationType:(UIWebViewNavigationType)navigationType {
        if (navigationType == UIWebViewNavigationTypeOther) {
            NSString *checkURL = @"http://www.linkyouwanttogotoviasafari.com";
            NSString *reqURL = request.URL.absoluteString;
            if ([reqURL isEqualToString:checkURL])
                 {
                     [[UIApplication sharedApplication] openURL:request.URL];
                return false;
        }
            else {
                return true;
            }
        }
        return true;
    }
    

    【讨论】:

    • 只有当您知道要在 safari 中打开的确切 url,不涉及任何带有 target="_blank" 设置的通用链接时,这才很棒
    猜你喜欢
    • 2015-08-16
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    相关资源
    最近更新 更多