カスタムHTMLをWKWebViewにロードして、ビューポートでwidth=device-width
プロパティを設定しています。これはiOS 12では完全に機能しますが、iOS 13(ベータ7)でのスクロールに問題があります。
特に、width=device-width
を使用すると、Webビューをスクロールできないため、コンテンツの一部が表示されません。これは、ユーザーがズームしてピンチした場合にのみ可能であり、その後、魔法のように(水平および垂直の両方に)スクロールが可能になります。
これを正当化できるiOS 13のWKWebView(またはスクロールビュー)の変更に関するドキュメントには何も見つかりませんでした。何か不足していますか?または、これはiOS 13/Xcode 11のバグですか?
私の場合、 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)
}
多分それは役に立ちます。