web-dev-qa-db-fra.com

Le défilement ne fonctionne pas sur WKWebView sur iOS 13 bêta

Je charge du HTML personnalisé dans un WKWebView, en définissant la propriété width=device-width dans la fenêtre. Cela fonctionne parfaitement dans iOS 12, mais pose un problème de défilement avec iOS 13 (beta 7).

En particulier, lorsque width=device-width est utilisé, il n'est pas possible de faire défiler la vue Web, donc une partie du contenu n'est pas visible. Cela n'est possible que si l'utilisateur pince pour zoomer, puis par magie, il commence à être possible de faire défiler (à la fois horizontalement et verticalement).

Je n'ai rien trouvé dans la documentation concernant les modifications apportées à WKWebView (ou même à scrollview) dans iOS 13 qui pourrait justifier cela. Suis-je en train de manquer quelque chose? Ou peut-être que c'est un bug d'iOS 13/Xcode 11?

3
papafe

Dans mon cas, après avoir lu Insérer CSS dans du HTML chargé dans UIWebView/WKWebView J'essaie ceci:

 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    insertCSSString(into: webView)
  }

 func insertCSSString(into webView: WKWebView) {
      let cssString = "body { overflow: scroll !important }"
      let jsString = "var style = document.createElement('style'); style.innerHTML = '\(cssString)'; document.head.appendChild(style);"
      webView.evaluateJavaScript(jsString, completionHandler: nil)
  }

Ou ca:

func insertCSSString(into webView: WKWebView) {
      let jsString = "document.querySelectorAll('*[style]').forEach(el => el.style.overflow = 'scroll');"
    webView.evaluateJavaScript(jsString, completionHandler: nil)
  }

c'est peut-être utile.

1
ArturRuz