webViewDidFinishLoad在加载文件之前调用 - iOS 8

时间:2016-10-06 05:25:45

标签: ios swift uiwebview

我在 func webViewDidFinishLoad(webView: UIWebView) { webView.scrollView.setZoomScale(3.0, animated: false) webView.scrollView.contentOffset = CGPointMake(0, -(self.webView.scrollView.contentInset.top)) } 中加载了一个大小> 5MB的pdf文件。我想在加载后将PDF文件缩放到一定程度。

webViewDidFinishLoad

上面的代码段给出了iOS 9+上的预期结果。但是在iOS 8上,当 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)) } 被触发时,pdf没有被加载并且没有效果。 enter image description here

我也试过

webView

它工作正常,但不是每次都这样。增加时间不是一个好主意,因为有时;With CTE AS ( SELECT Name, Country, Status, COUNT(*) OVER (PARTITION BY Name, Country) AS cnt FROM mytable ), CTE2 AS ( SELECT Name, Country, Status, DENSE_RANK() OVER (PARTITION BY Name ORDER BY cnt DESC, Country) AS seq FROM CTE ) SELECT Name, Country, Status, COUNT(*) AS Total FROM CTE2 WHERE seq <= 3 GROUP BY Name, Country, Status ORDER BY Name, Country 加载文件需要5秒以上。

我尝试了google搜索的许多解决方案

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后指示消失。无论如何,如果我们能够在指标消失时识别事件,那么我可以缩放文件。

有没有办法识别它?或者用于识别文件加载完成的任何其他方式?

1 个答案:

答案 0 :(得分:0)

我在WKWebView中遇到了类似的问题。我的解决方案是将contentSize的观察者添加到webView.scrollView。不确定这是否有助于解决您的问题,但希望它会指出您正确的方向。

webView.scrollView.addObserver(self, forKeyPath:  #keyPath(UIScrollView.contentSize), options: .new, context: nil)

获得结果时执行某些操作

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    if keyPath ==  #keyPath(UIScrollView.contentSize) {
        //do something
    }
}