Как открыть социальную ссылку, нажав на кнопку внутри WKWebView - PullRequest
0 голосов
/ 22 марта 2019

Внутри WKWebView есть кнопка социальной ссылки . Когда я нажимаю на кнопку ничего не происходит.

Подскажите, пожалуйста, как открыть ссылку, нажав на кнопку?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 22 марта 2019

какую ссылку вы хотите открыть, измените "facebook", "twitter", и вы можете добавить дополнительные ссылки также

     func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
    if navigationAction.navigationType == .linkActivated  {
        if let url = navigationAction.request.url ,UIApplication.shared.canOpenURL(url)  {
            //    let urlString = try! String(contentsOf: url)
            if (url.absoluteString.range(of: "facebook.com") != nil || url.absoluteString.range(of: "twitter.com") != nil){

               //UIApplication.shared.open(url)
                print("Redirected to browser. No need to open it locally")
                decisionHandler(.cancel)
            }else{
                print("Open it locally")
                decisionHandler(.allow)
            }
        }
1 голос
/ 22 марта 2019

Вам нужен слушатель по щелчку.

Вы можете использовать WKWebView для отображения интерактивного веб-контента в вашем приложении. Идеально подходит для отображения разметки HTML, стилизованного текстового содержимого или полных веб-страниц. После этого, вам нужно обработать кнопку социального вызова, которую вы вызываете, и данные, если таковые имеются, ...

Ответ на события WKWebView с помощью WKNavigationDelegate

Веб-представление WKWebView имеет два основных протокола делегата и свойства:

  • navigationDelegate типа WKNavigationDelegate, который отвечает на навигационные события
  • uiDelegate типа WKUIDelegate, который отвечает пользователю события взаимодействия

Из этих двух протоколов делегатов WKNavigationDelegate, вероятно, используется наиболее часто. Итак, давайте подключимся к некоторым событиям навигации по страницам! Мы сделаем это с этими функциями делегата:

webView(_:didStartProvisionalNavigation:)
webView(_:didCommit:)
webView(_:didFinish:)
webView(_:didFail:withError:)
webView(_:didFailProvisionalNavigation:withError:)

Во-первых, давайте примем протокол и настроим делегата webView. Вот как:

  1. Добавьте протокол WKNavigationDelegate к объявлению класса вашего контроллера представления, например: class WebViewController: UIViewController, WKNavigationDelegate

  2. Установите для свойства navigationDelegate webView значение self перед загрузкой веб-запроса, например: webView?.navigationDelegate = self

Затем реализуйте пять функций делегата, описанных ранее. Задайте для их тел функций печать (#function), чтобы мы могли видеть порядок вызова функций.

Как это:

func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!)
{
    print(#function)
}
...