首页 > 解决方案 > WKWebView 的 pageCount 不正确;这可以纠正或完全删除吗?

问题描述

我有一个 pdf 加载到 WKWebView 中的效果很差。更复杂的是 WKWebView 位于 tableView 内部,其重新加载和其他更新似乎扰乱了 WKWebView 并使页面计数一团糟。

我在项目中有其他 WKWEbView 不在 tableView 内,并且页面计数在那里正确。

我在 SO 上发现了这段试图删除页数的代码;它有所帮助,但并非完全如此。

func getSubviewsOfView(v:UIView) -> [UIView] {
  var viewArray = [UIView]()
  for subview in v.subviews {
    viewArray += getSubviewsOfView(v: subview)
    viewArray.append(subview)
  }
  return viewArray
}

在 webView didFinish 导航方法中,我有:

let webViewSubviews = self.getSubviewsOfView(v: webView)
for v in webViewSubviews {
    if v.isKind(of: UILabel.self) || v.isKind(of: UIImageView.self) || v.isKind(of: UIVisualEffectView.self) {
              v.superview?.superview?.superview?.superview?.removeFromSuperview()
       }
     }

这段代码确实删除了 PDFPageLabelView,也就是说,我认为 superView 拥有具有页码的标签,但它的问题是它直到重新加载 WKWebView 和/或之后才会被删除tableView 和它的页数对用户可见,直到它最终被删除。

有没有办法纠正 WKWebView 上错误的页数?UIWebView 从来没有这个问题;(

标签: iosuitableviewpdfwkwebview

解决方案


我不知道你到底想要什么,但我认为你需要线性数组中的所有视图,也许这可以帮助你:

func getSubviewsOfView(v: UIView) -> [UIView] {
  guard !v.subviews.isEmpty else { return [v] }
  var v1 = v.subviews.flatMap({ (view) -> [UIView] in
    return getSubviewsOfView(v: view)
  })
  v1.append(v)
  return v1
}

推荐阅读