我正在 WKWebView 中加载自定义 HTML,并在视口中设置属性
width=device-width
。这在 iOS 12 中完美运行,但在 iOS 13(beta 7)中出现滚动问题。
特别是,当使用
width=device-width
时,无法滚动webview,因此部分内容不可见。只有当用户捏合缩放时才能做到这一点,然后神奇地开始可以滚动(水平和垂直)。
我在文档中没有找到任何有关 iOS 13 中 WKWebView(甚至滚动视图)的更改可以证明这一点。我错过了什么吗?或者这可能是 iOS 13 / Xcode 11 的一个错误?
我也遇到了这个问题,因为body的样式中添加了“overflow:hidden”。我删除了“溢出:隐藏”,仅此而已。
就我而言,阅读完将 CSS 插入 UIWebView / WKWebView 中加载的 HTML 后 我试试这个:
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)
}
也许有帮助。
这是 obj c 中的答案 - 谢谢ArturRuzswift
NSString *js = [NSString stringWithFormat:@"var style = document.createElement('style'); style.innerHTML = '%@'; document.head.appendChild(style);",@"body { overflow: scroll !important }"];
[webView evaluateJavaScript:js
completionHandler:^(id _Nullable result, NSError * _Nullable error) {
NSLog(@"first way");
}];