Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Swift onfinish load event of a UIWebView

I'm loading a pdf in WebView from my server with this code :

    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!)

This code works but how can i receive an event "onPageLoad"? sorry for bad english, i'm italian(:

like image 915
Alessandro Zago Avatar asked Nov 30 '22 23:11

Alessandro Zago


2 Answers

You need to implement UIWebViewDelegate like this and use webViewDidFinishLoad to know the page is loaded successfully, for that set the webView delegate with your viewController like this, and implement the webViewDidFinishLoad method inside your viewController like below example.

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
    }
}
like image 167
Nirav D Avatar answered Dec 09 '22 17:12

Nirav D


In case someone is looking solution for WKWebView, implement WKNavigationDelegate:

add webView.navigationDelegate = self

and then use:

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

}
    
like image 23
nickinade Avatar answered Dec 09 '22 16:12

nickinade