IOS Development - Открытая URL-ссылка из веб-просмотра в сафари вместо текущей - PullRequest
0 голосов
/ 12 октября 2019

У меня здесь сложная проблема. как я загружаю текстовое содержимое в веб-просмотр, используя loadHTMLString. В содержании есть ссылки на веб-сайты. При нажатии на ссылки на веб-сайте содержимое отображается в текущем веб-просмотре.

но клиент хочет, чтобы он отображался в сафари при нажатии. Есть идеи как этого добиться?

PS. Текстовое содержимое, загружаемое в веб-просмотр, является динамическим, так как клиент запросил, чтобы он мог манипулировать содержимым текста в другом формате по своему усмотрению.

Ответы [ 2 ]

1 голос
/ 12 октября 2019

Установите делегат вашего веб-представления и реализуйте webView (_: managePolicyFor: SolutionHandler:) .

Когда он вызывается, вы можете прочитать действие навигации для URL, откройте URLв контроллере представления Safari и вызовите обработчик с помощью .cancel, чтобы остановить навигацию по веб-представлению.

0 голосов
/ 12 октября 2019

Вам необходимо реализовать этот делегат следующим образом

    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
    if let host = navigationAction.request.url?.host {

        if host.contains("facebook.com") {
           UIApplication.shared.open(URL(string: host)!, options: [:])
            decisionHandler(.cancel)
            return
        }
    }

    decisionHandler(.allow)
}

Вам решать, хотите ли вы, чтобы некоторые URL открывались в Safari, или все, измените логику соответствующим образом.

...