web-dev-qa-db-ja.com

iOS 13ベータ版のWKWebViewでスクロールが機能しない

カスタムHTMLをWKWebViewにロードして、ビューポートでwidth=device-widthプロパティを設定しています。これはiOS 12では完全に機能しますが、iOS 13(ベータ7)でのスクロールに問題があります。

特に、width=device-widthを使用すると、Webビューをスクロールできないため、コンテンツの一部が表示されません。これは、ユーザーがズームしてピンチした場合にのみ可能であり、その後、魔法のように(水平および垂直の両方に)スクロールが可能になります。

これを正当化できるiOS 13のWKWebView(またはスクロールビュー)の変更に関するドキュメントには何も見つかりませんでした。何か不足していますか?または、これはiOS 13/Xcode 11のバグですか?

3
papafe

私の場合、 UIWebView/WKWebView で読み込まれたHTMLにCSSを挿入した後、これを試します。

 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)
  }

またはこれ:

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

多分それは役に立ちます。

1
ArturRuz