【问题标题】:webViewDidFinishLoad called before loading file - iOS 8在加载文件之前调用 webViewDidFinishLoad - iOS 8
【发布时间】: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 后指示符消失。无论如何,如果我们可以在指示器消失时识别事件,我就可以缩放文件。

有什么方法可以识别吗?或者有什么其他方式来识别文件加载完成吗?

【问题讨论】:

    标签: ios swift uiwebview


    【解决方案1】:

    我在 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
        }
    }
    

    【讨论】:

    • 我在添加观察者时面临的问题是,当用户也进行缩放缩放时,会通过页面闪烁来调用监听器。有没有办法识别contentSize是由observeValue()中的用户引起的?
    猜你喜欢
    • 1970-01-01
    • 2011-08-22
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2017-07-22
    • 1970-01-01
    • 2013-06-03
    相关资源
    最近更新 更多