【发布时间】:2016-10-06 05:25:45
【问题描述】:
我在我的UIWebView 中加载了一个 >5MB 的 pdf 文件。我想在加载后将 PDF 文件缩放到某个级别。
func webViewDidFinishLoad(webView: UIWebView) {
webView.scrollView.setZoomScale(3.0, animated: false)
webView.scrollView.contentOffset = CGPointMake(0, -(self.webView.scrollView.contentInset.top))
}
上面的 sn-p 给出了 iOS 9+ 上的预期结果。但是在 iOS 8 上,当webViewDidFinishLoad 被触发时,pdf 没有被加载并且没有效果。
我也试过了
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
webView.scrollView.setZoomScale(3.0, animated: false)
webView.scrollView.contentOffset = CGPointMake(0, -(self.webView.scrollView.contentInset.top))
}
它工作正常,但不是每次。增加时间不是一个好主意,因为有时webView 需要超过 5 秒才能加载文件。
我尝试了很多通过谷歌搜索得到的解决方案
UIWebView: when did a page really finish loading?
How to detect when a UIWebView has completely finished loading?
UIWebView - How to identify the "last" webViewDidFinishLoad message?
但没有什么能解决我的问题。
我们在屏幕截图中看到的活动指示器不是我添加的。完全加载 PDF 后指示符消失。无论如何,如果我们可以在指示器消失时识别事件,我就可以缩放文件。
有什么方法可以识别吗?或者有什么其他方式来识别文件加载完成吗?
【问题讨论】: