Get WKWebView content size once loading is completed

209 Views Asked by At

We have a requirement to disable scrolling of web view and show the complete web view content in a table view cell, and only table view should be scrolling not the web view

Tried the below approach, but it's not giving the correct content size of the web view if we disable scrolling of the WKWebView.

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        self.updateWebView(for: webView)
    }
    func updateWebView(for webView: WKWebView) {
        let scaleFactor: CGFloat = UIDevice.current.userInterfaceIdiom == .pad ? 1.0 : 0.70
        let scaleJavascript = "var style = document.createElement(\"style\"); document.head.appendChild(style); style.innerHTML = \"html{-webkit-text-size-adjust: none; font-size: 25px; word-wrap: break-word;}\";var viewPortTag=document.createElement('meta');viewPortTag.id=\"viewport\";viewPortTag.name = \"viewport\";viewPortTag.content = \"width=device-width; user-scalable=0.0; initial-scale=\(scaleFactor); minimum-scale=\(scaleFactor); maximum-scale=\(scaleFactor); shrink-to-fit=no;\";document.getElementsByTagName('head')[0].appendChild(viewPortTag);"
        webView.evaluateJavaScript(scaleJavascript, completionHandler: { [weak self] (_, _) in
            DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
                self?.height = webView.scrollView.contentSize.height
                self?.onUpdate?(nil)
            }
        })
    }

Any help or lead is highly appreciated.

0

There are 0 best solutions below