-1

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

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

有了内容,就会出现链接,如下图所示。 该应用程序的屏幕截图

如何使我的文章的这些链接在 SFSafariViewController 上打开?既然它来自 HTML 字符串并且我不知道文章链接 url,我该怎么办?

4

1 回答 1

0

那行得通。创建一个名为 allowLoad 的 Bool 变量以允许或不允许加载 webview 内容。在 webview 上加载文章后,allowLoad 将变为 false,因此下一个请求只能在链接触摸时开始,然后它将显示 SFSafariViewController(我不知道你是否理解,所以你可以问我任何问题)

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
}
于 2015-11-25T20:52:44.217 回答