Ios WKWebView显示灰色背景,pdf内容在viewcontroller开关上不可见
我正在从WKWebView的主捆绑包或文档目录加载pdf文件。最初它的加载非常完美,但它显示灰色背景,如果我在tabbar控制器中切换tab后回到同一屏幕,pdf内容将不可见。这是我用来加载的代码Ios WKWebView显示灰色背景,pdf内容在viewcontroller开关上不可见,ios,swift,ipad,wkwebview,Ios,Swift,Ipad,Wkwebview,我正在从WKWebView的主捆绑包或文档目录加载pdf文件。最初它的加载非常完美,但它显示灰色背景,如果我在tabbar控制器中切换tab后回到同一屏幕,pdf内容将不可见。这是我用来加载的代码 class ViewController: UIViewController { @IBOutlet var progressView: UIProgressView! @IBOutlet var webView: WKWebView! var pdfURLS: URL?
class ViewController: UIViewController {
@IBOutlet var progressView: UIProgressView!
@IBOutlet var webView: WKWebView!
var pdfURLS: URL?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
pdfURLS = Bundle.main.url(forResource: "97_pdf", withExtension: "pdf", subdirectory: nil, localization: nil)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("pdfURLS: \(String(describing: pdfURLS))")
}
@IBAction func loadAction(_ sender: Any) {
if let pdfURL = pdfURLS {
self.webView.loadFileURL(pdfURL, allowingReadAccessTo: pdfURL.deletingLastPathComponent())
}
}
}
有人对这个问题有想法吗
附图片参考。如果我使用不推荐使用的UIWebView,则不会出现此类问题,但我不想使用不推荐使用的库。我们在Firefox for iOS中也遇到了此问题: 我还在WebKit bug中引用了这篇SO帖子: 目前,我们找到了一个解决办法:
let previousZoomScale = webView.scrollView.zoomScale
let previousContentOffset = webView.scrollView.contentOffset
if let currentItem = webView.backForwardList.currentItem {
webView.go(to: currentItem)
}
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(100)) {
webView.scrollView.setZoomScale(previousZoomScale, animated: false)
webView.scrollView.setContentOffset(previousContentOffset, animated: false)
}
基本上,我们从后退/前进历史列表中重新访问URL,该列表重新绘制PDF,然后恢复scrollview位置/缩放。这不是很好,但它可以工作。通过在ViewWillDisplay中重新加载pdf数据解决了这个问题。 到目前为止,它是有效的。 首先从存储器/web加载数据
var data: Data?
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if let data = data {
webView.load(data, mimeType: "application/pdf", characterEncodingName: "utf8", baseURL: URL(fileURLWithPath: ""))
}
}
可能您的PDF url即将发布@失败者不,不是。如果我使用不推荐使用的UIWebView,就不会有这样的问题,但我不想使用不推荐使用的库。我在iPhone XR模拟器上尝试过,我遇到了这个问题。而且,在真正的设备上,它实际上不工作。这一定是iOS 12的一个bug。返回视图时,我也会看到灰色屏幕(在最初加载良好后)。我试过的每个iOS 12模拟器和我的iOS 12设备都会出现这种情况。在iOS 12之前我从未遇到过这个问题。我检查了一个正常的网站(apple.com)是否正常,它是否正常。它似乎不仅不适用于PDF…在iOS 13.2.2上检查,问题仍然没有解决如果用户在设置contentOffset值的情况下放大了内容,PDF将返回到第一页。。似乎zoomScale的设置出于某种原因正在重置contentOffset,即使zoomScale是在contentOffset之前设置的:(