-1

アプリは UIWebView で記事を開きます。それらの記事のリンクを SFSafariViewController で開く必要があります (必須です)。これまでのところ、ウェブビューで開き、ユーザーエクスペリエンスを台無しにします. 私の WebView は HTML 文字列を読み込み、以下のようにコンテンツを読み込みます。

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

コンテンツとともに、下の画像のようにリンクが表示されます。 アプリのスクリーンショット

記事のリンクを SFSafariViewController で開くにはどうすればよいですか? HTML Strings から来ており、記事リンクの 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 に答える