ios - 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 从来没有这个问题;(
解决方案
我不知道你到底想要什么,但我认为你需要线性数组中的所有视图,也许这可以帮助你:
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
}
推荐阅读
- javascript - 如果我不存储 Array.map 的返回值会怎样?
- html - 如何使滑块箭头更高
- javascript - 在 Javascript 中插入字符串 - 法语键盘
- vb.net - 使用 VB.Net 创建 MS Access 数据库文件、表和字段
- sql - 有没有办法增加 tfs 2013 中的数据库大小限制我的收藏已满?
- android - 无限制地触发 JobService
- python - 用于多行字符串连接的 Python 循环
- reactjs - 如何部署使用 API-server 的 react 应用程序?
- android - 如何确定 API 是否仅被指定的应用程序访问?
- javascript - 在 express 和 react 中用 index.html 响应