2016-07-15 10 views
0

Ich muss den Webview-Frame programmgesteuert zurücksetzen, wenn Webview vollständig geladen hat. Delegate-Methoden hinzugefügt werden, aber WebViewDidFinishLoad wird mehrmals für eine einzelne Anfrage aufgerufen. Wie kann ich Überprüfen Sie, ob das Laden in webViewDidFinishLoad abgeschlossen ist oder nicht?Wie zu erkennen, wenn ein UIWebView vollständig in Swift geladen

+0

Hallo und willkommen bei StackOverflow. Bitte nehmen Sie sich etwas Zeit, um die Hilfeseite zu lesen, insbesondere die Abschnitte mit dem Namen ["Welche Themen kann ich hier fragen?"] (Http://stackoverflow.com/help/on-topic) und ["Welche Arten von Fragen sollte ich haben nicht fragen? "] (http://stackoverflow.com/help/dont-ask). Und, was noch wichtiger ist, lesen Sie bitte [die Checkliste für Stack Overflow-Fragen] (http://meta.stackexchange.com/q/156810/204922). Vielleicht möchten Sie auch etwas über [Minimale, vollständige und überprüfbare Beispiele] (http://stackoverflow.com/help/mcve) erfahren. – lokusking

+0

@ priya.vr Ich aktualisiere, um zu überprüfen, ob es wirklich fertig ist – xmhafiz

+0

@ cod3rite, Aktualisiert den Code, Problem gelöst ist, Danke –

Antwort

3

können Sie verwenden UIWebViewDelegate

Es gibt zwei Methoden zum Ziel zu erkennen, eine mit Erfolg und zum anderen mit Fehler

extension YourViewController: UIWebViewDelegate { 

    func webViewDidFinishLoad(webView: UIWebView) { 
     if webView.loading { 
      // still loading 
      return 
     } 

     print("finished") 
     // finish and do something here 
    } 

    func webView(webView: UIWebView, didFailLoadWithError error: NSError?) { 
     print("didFailLoadWithError \(error?.localizedDescription)") 
     // error happens 
    } 
} 

Vergessen Sie nicht zu Ihrem delegate-self in viewDidLoad oder in didSet einzustellen (wie von @ Jim empfohlen)

myWebView.delegate = self 
+2

Ich finde, dass es hilft, Code besser zu organisieren, wenn Sie Outlets mit 'didset' anstelle von stopfen alles in' viewDidLoad() '. – Jim

0
import UIKit 

class ViewController: UIViewController, UIWebViewDelegate { 

    @IBOutlet var webView : UIWebView 

    var url = NSURL(string: "http://google.com") 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     //load initial URL 
     var req = NSURLRequest(URL : url) 
     webView.loadRequest(req) 
    UIApplication.sharedApplication().networkActivityIndicatorVisible = true 

    } 


    func webViewDidFinishLoad(webView : UIWebView) { 
     UIApplication.sharedApplication().networkActivityIndicatorVisible = false 
     println("BB") 
    } 
}