iOS 13 beta 上的 WKWebView 无法滚动

问题描述 投票:0回答:3

我正在 WKWebView 中加载自定义 HTML,并在视口中设置属性

width=device-width
。这在 iOS 12 中完美运行,但在 iOS 13(beta 7)中出现滚动问题。

特别是,当使用

width=device-width
时,无法滚动webview,因此部分内容不可见。只有当用户捏合缩放时才能做到这一点,然后神奇地开始可以滚动(水平和垂直)。

我在文档中没有找到任何有关 iOS 13 中 WKWebView(甚至滚动视图)的更改可以证明这一点。我错过了什么吗?或者这可能是 iOS 13 / Xcode 11 的一个错误?

ios scrollview wkwebview ios13 xcode11
3个回答
4
投票

我也遇到了这个问题,因为body的样式中添加了“overflow:hidden”。我删除了“溢出:隐藏”,仅此而已。


3
投票

就我而言,阅读完将 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)
  }

也许有帮助。


0
投票

这是 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");
    }];
© www.soinside.com 2019 - 2024. All rights reserved.