在SFSafariViewController上打开WebView链接

时间:2015-11-25 19:04:36

标签: ios swift uiwebview ios9 sfsafariviewcontroller

该应用程序在UIWebView中打开文章,我需要在SFSafariViewController上打开这些文章的链接(这是强制性的)。到目前为止,它将在webview上打开并弄乱我的用户体验。我的WebView加载HTML字符串并加载内容,如下所示。

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    self.webView.loadHTMLString(article.content, baseURL: nil)
}

通过内容,链接将会出现,如下图所示。 screenshot of the app

如何在SFSafariViewController上打开我的文章的链接?我应该怎么做,因为它来自HTML字符串,我不知道文章链接网址?

1 个答案:

答案 0 :(得分:0)

那很有用。创建一个名为allowLoad的Bool变量,以允许或不加载webview内容。在webview上加载文章之后,allowLoad将变为false,因此下一个请求将只能在链接触摸上开始,然后它将显示SFSafariViewController(我不知道你是否缺少,所以你可以问我任何事情)< / p>

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {

    if (navigationType == UIWebViewNavigationType.LinkClicked){
        let url = request.URL;

        if #available(iOS 9.0, *) {
            let sfViewController = SFSafariViewController(URL:url!, entersReaderIfAvailable: true)

            self.presentViewController(sfViewController, animated: true, completion: { () -> Void in
                print("May the force be with you!")
            })
        } else {

        }
    }

    return allowLoad
}

func webViewDidFinishLoad(webView: UIWebView) {
    return allowLoad = false
}