Невозможно открыть внешнюю ссылку в сафари с помощью WKWebView - PullRequest
0 голосов
/ 30 марта 2020

Я мигрирую с UIWebView на WKWebView. Необходимо загрузить HTML контент в WKWebView все работает нормально, но проблема не в том, что невозможно открыть ссылку во внешнем браузере Safari после нажатия на любую ссылку из WKWebView. Я использовал ниже

класс

class CTFSPolicyAndTermsViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {}

розетка и WKWebView переменная

  @IBOutlet weak var webViewContainer: UIView!
  var webView: WKWebView!

viewDidLoad метод

    override func viewDidLoad() {
    super.viewDidLoad()
    webView = WKWebView()
    self.webView.uiDelegate = self
    self.webView.navigationDelegate = self

    let webConfiguration = WKWebViewConfiguration()
    webView =  WKWebView(frame: .zero, configuration: webConfiguration)
    webView.translatesAutoresizingMaskIntoConstraints = false
    webViewContainer.addSubview(webView)
   [webView.topAnchor.constraint(equalTo: webViewContainer.topAnchor),
    webView.bottomAnchor.constraint(equalTo: webViewContainer.bottomAnchor),
    webView.leftAnchor.constraint(equalTo: webViewContainer.leftAnchor),
    webView.rightAnchor.constraint(equalTo: webViewContainer.rightAnchor)].forEach  { 
     anchor in
    anchor.isActive = true
    }

для загрузки метод HTML Content

     if(self.isTermsMode)
        {

            let path:String = Bundle.main.path(forResource: "abc", ofType: "html")!
            let text = try? String(contentsOfFile: path, encoding: String.Encoding.utf8)
            webView!.loadHTMLString(text!, baseURL: nil)
        }

definePolicyFor

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        if let url = navigationAction.request.url {
            print(url)
            UIApplication.shared.open(url)  
            decisionHandler(.cancel)
        } else {
        decisionHandler(.allow)
       }
    }

decidePolicyFor должен вызываться, но он не выполняется. Я не могу найти проблему

1 Ответ

0 голосов
/ 30 марта 2020

я пропустил заказ

let webConfiguration = WKWebViewConfiguration()
    webView =  WKWebView(frame: .zero, configuration: webConfiguration)
    webView.translatesAutoresizingMaskIntoConstraints = false
    webViewContainer.addSubview(webView)
    [webView.topAnchor.constraint(equalTo: webViewContainer.topAnchor),
     webView.bottomAnchor.constraint(equalTo: webViewContainer.bottomAnchor),
     webView.leftAnchor.constraint(equalTo: webViewContainer.leftAnchor),
     webView.rightAnchor.constraint(equalTo: 
      webViewContainer.rightAnchor)].forEach  { anchor in
        anchor.isActive = true
    }
    self.webView.uiDelegate = self
    self.webView.navigationDelegate = self
...