Swift UIWebView 的 onfinish 加载事件

Swift onfinish load event of a 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"? 抱歉英语不好,我是意大利人(:

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
    }

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

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

只需将 effective 与 ;

一起使用
 func webViewDidFinishLoad(webView : UIWebView) {

 // Here your loaded codes.

 }

如果有人正在寻找 WKWebView 的解决方案,请实施 WKNavigationDelegate:

添加webView.navigationDelegate = self

然后使用:

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

}