WKWebView no muestra contenido "debajo de la pantalla"

Debo integrar WKWebView dentro de UITableView (no lo preguntes).

Me aseguré de que el desplazamiento de WKWebView esté deshabilitado, de esta manera evito tener una vista desplazable dentro de una vista desplazable (UITableView).

Sin embargo, cuando el contenido HTML dentro de WKWebview es grande, digamos dos veces la pantalla, encuentro que el contenido debajo de la pantalla no se muestra al usuario, es decir, cuando el usuario desplaza la vista de la tabla, solo hay una pantalla blanca \ vacía en la que el WKWebView es …

Actualizo la altura de WebViewTableViewCell de acuerdo con:

public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { let height = webView.scrollView.contentSize.height ... ... delegate.updateWebViewCellHeight(height: self.cellHeight) } 

Supongo que probablemente sea el efecto de alguna optimization en WKWebView que le permita renderizar DOM solo cuando se muestren en la pantalla.

Mi pregunta es: ¿qué puedo hacer para asegurarme de que todo el contenido dentro de WKWebView se muestre al usuario cuando se desplaza por la vista de la tabla?

PS UIWebView hace que todo el contenido esté bien, parece estar sucediendo solo en WKWebView

Vea la image a continuación:

introduzca la descripción de la imagen aquí

Puede llamar a setNeedsLayout en WKWebView, (Swift):

Tenga en count que esto es scrollView para UITableView.

 func scrollViewDidScroll(_ scrollView: UIScrollView) { // use IndexPath for row/section with your WKWebView if let cell = tableView.cellForRow(at: IndexPath(row: 1, section: 0)) as? WKWebViewCell { // Here we take our cell cell.wkWebView?.setNeedsLayout() } } 

Ver WKWebView no se renderiza correctamente en iOS 10

Esta es realmente la optimization de Apple: para hacer solo una parte visible de la vista web. Hay varias preguntas similares sobre este problema:

La captura de pantalla de WKWebView no representa completamente la altura de la página completa.

¿Cómo capturar una captura de pantalla de página completa de WKWebview?

Intente llamar a [self.webView setNeedsDisplay] en la vista de tabla del método scrollViewDidScroll: del delegado.

Asegúrese de que al actualizar la altura de la celda, TableViewCell no recargue WebView. De lo contrario, te atascarás en bucle sin fin y el comportamiento extraño y la altura se reiniciarán una y otra vez.

 var CGFloat : webViewHeight = 0.0 

// Rastrea la altura actual de webView.

 // MARK: - WKWebView Delegate public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { weak var weakSelf = self webView.evaluateJavaScript("document.documentElement.style.webkitUserSelect='none';") { (object : Any?, error : Error?) in if (error == nil) { let size : CGRect = self.heightForWebView(webView: webView) if (weakSelf.webViewHeight == 0.0 || size.height != weakSelf.webViewHeight){ weakSelf.webViewHeight = size.height } webView.frame = size delegate.updateWebViewCellHeight(height: size.height) } } } // MARK: - WKWebView Heplper func heightForWebView(webView : WKWebView)-> CGRect { var rect : CGRect = webView.frame as CGRect! rect.size.height = 1 webView.frame = rect let newSize : CGSize = webView.sizeThatFits(CGSize.zero) rect.size = newSize return rect }