Взаимодействие с пользователем автоматически отключается после назначения высоты WKWebView - PullRequest
0 голосов
/ 17 февраля 2020

Я использую WKWebView с loadHTMLString методом. и используя следующий код для оценки JavaScript.

webView.evaluateJavaScript(

                "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '\(Int(textSize))%'", completionHandler: { (result, err) in
                    if result != nil {
                        if let _ = self.delegate {
                            webView.frame.size.height = 1
                            webView.contentMode = .scaleAspectFit
                            webView.evaluateJavaScript("var meta = document.createElement('meta');" +
                                "meta.name = 'viewport';" + " " +
                                "meta.content = 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no';" +
                                "var head = document.getElementsByTagName('head')[0];" + "head.appendChild(meta);", completionHandler: { (result, error) in
                                    webView.evaluateJavaScript("document.documentElement.scrollHeight", completionHandler: { (height, error) in
                                        let h = height as! CGFloat
                                        let fittingHeight = h * 1.1
                                        self.webKit.frame = CGRect(x: 21, y: 256, width: 269, height: fittingHeight)
                                        self.scrollView.contentSize = CGSize(width: 304, height: fittingHeight)
                                        self.webKitHeightCons.constant = fittingHeight
                                        self.webKit.isUserInteractionEnabled = true
                                    })
                            })
                        }
                    }
            })

, но взаимодействие WKWebView автоматически отключается после присвоения значения постоянной высоты.

self.webKitHeightCons.constant = fittingHeight

Я также использую self.webKit.isUserInteractionEnabled = true сразу после self.webKitHeightCons.constant = fittingHeight, но она все еще не работает ... я не понимаю, какова связь между константой высоты и взаимодействием с пользователем.

следующий код используется для нажатия на событие в WKWebView

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: ((WKNavigationActionPolicy) -> Void)) {

    switch navigationAction.navigationType {
    case .linkActivated:
        if let _ = delegate {
            delegate?.shouldStartLoadWith(url: navigationAction.request.url!)
        }

        decisionHandler(.cancel)
        return
    default:
        break
    }

    decisionHandler(.allow)
}
...