2017-12-27 1 views
2

여기 내 코드입니다 :Swift에서 WKWebView 페이지로드 진행률을 모니터링하는 방법은 무엇입니까?

@IBOutlet weak var webView: WKWebView! 
@IBOutlet weak var progressView: UIProgressView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    webView.uiDelegate = self 
    webView.navigationDelegate = self 

    webView.addObserver(self, forKeyPath: "estimatedProgress", options: .new, context: nil)   
} 

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { 
    if (keyPath == "estimatedProgress") { 
     progressView.setProgress(Float(webView.estimatedProgress), animated: true) 
     print(webView.estimatedProgress) 
    } 
} 

하지만 estimatedProgress 단지 두 개의 부동 소수점 수 (0.1 및 1.0)을 보여주는 그리고 내가 생각 작동하지 않습니다. 나는 Alamofire 진행률을 사용했고 UI가 더 좋아지기 때문에 밀리 초 단위로 바뀌지 만이 코드는 잘 작동하지 않습니다 ...

누구든지 webView의 진행 과정을 도울 수 있습니까?

답변

0

스위프트 4.0

@IBOutlet weak var webView: WKWebView! 
@IBOutlet weak var progressView: UIProgressView! 
override func viewDidLoad() { 
    super.viewDidLoad() 

    // load website or HTML page 
    self.webView.load(NSURLRequest(url: URL(string: "https://www.apple.com")!) as URLRequest); 

    //add observer to get estimated progress value 
    self.webView.addObserver(self, forKeyPath: "estimatedProgress", options: .new, context: nil); 
} 

// Observe value 
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { 
    if keyPath == "estimatedProgress" { 
     print(self.webView.estimatedProgress); 
     self.progressView.progress = Float(self.webView.estimatedProgress); 
    } 
} 
관련 문제