UIWebView的Swift onfinish加载事件

时间:2016-08-25 11:12:49

标签: ios swift uiwebview

我正在使用以下代码从我的服务器加载WebView中的pdf:

    webView = UIWebView(frame: CGRectMake(0, y, screenSize.width, screenSize.height-y))    
    let url : NSURL! = NSURL(string: urlFile)        
    webView?.loadRequest(NSURLRequest(URL: url))        
    webView?.opaque = false;
    webView?.backgroundColor = UIColor.clearColor()                
    webView?.scalesPageToFit = true;    
    self.view.addSubview(webView!)

此代码有效,但我如何才能收到“onPageLoad”事件? 抱歉英语不好,我是意大利人(:

4 个答案:

答案 0 :(得分:15)

您需要像这样实施UIWebViewDelegate并使用webViewDidFinishLoad知道网页已成功加载,为此设置webView delegate与您的viewController像这样,并在webViewDidFinishLoad内部实现viewController方法,如下例所示。

import UIKit
class ViewController: UIViewController, UIWebViewDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        webView = UIWebView(frame: CGRectMake(0, y, screenSize.width, screenSize.height-y))
        let url : NSURL! = NSURL(string: urlFile)
        webView?.loadRequest(NSURLRequest(URL: url))
        webView?.opaque = false;
        webView?.backgroundColor = UIColor.clearColor()
        webView?.scalesPageToFit = true; 
        webView?.delegate = self// Add this line to set the delegate of webView
        self.view.addSubview(webView!)       
    }

    func webViewDidFinishLoad(webView : UIWebView) {
        //Page is loaded do what you want
    }
}

答案 1 :(得分:2)

webView?.loadRequest(NSURLRequest(URL: url))之后,将webView设置为self(写下以下行)。

webView.delegate = self

实施webview delegate方法。

完成页面加载后,您将在func webViewDidFinishLoad(_ webView: UIWebView)中收到回调。

   func webViewDidFinishLoad(webView: UIWebView) {
        //handle the callback here when page load completes
    }

答案 2 :(得分:0)

只需使用effective;

 func webViewDidFinishLoad(webView : UIWebView) {

 // Here your loaded codes.

 }

答案 3 :(得分:0)

如果有人正在寻找WKWebView的解决方案,请实现WKNavigationDelegate并使用:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {

}