La méthode UIWebView webViewDidLoadFinish n'est pas appelée
J'ai été jouer avec des vues web rapide ce soir, mais ont un peu d'un problème.
Pour une raison que je ne suis pas en mesure d'obtenir la webViewDidStartLoad ou webViewDidFinishLoad méthodes de feu.
Dans mon scénario, j'ai une prise appelée webView lié à mon UIWebView élément.
Est ce que quelqu'un peut m'aider avec ce que je fais de mal?
C'est mon viewController.swift fichier:
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)
}
func webViewDidStartLoad(webView : UIWebView) {
//UIApplication.sharedApplication().networkActivityIndicatorVisible = true
println("AA")
}
func webViewDidFinishLoad(webView : UIWebView) {
//UIApplication.sharedApplication().networkActivityIndicatorVisible = false
println("BB")
}
}
source d'informationauteur Grantism
Vous devez vous connecter pour publier un commentaire.
Essayer cette!
J'ai connu le même problème, même je n'ai confirmé la UIWebViewDelete de soi et de la mise en œuvre de ses méthodes.
logique ci-dessus a parfaitement fonctionné avec le test de l'URl que j'ai reçu de recherche rapide sur google.
Mais j'ai quand j'ai remplacé la mienne. webViewDidFinishLoad jamais appelée.
ensuite Comment nous avons résolu?
Sur adossés à côté nous avons dû définir des type de contenu du document dans les en-têtes. et il fonctionne comme un charme.
Comme d'autres l'ont noté, le réglage du délégué de
UIWebView
et conforme à laUIWebViewDelegate
protocole est la meilleure solution possible.Pour les autres qui peuvent le faire ici. J'avais mis mon délégué méthodes dans un
private extension
qui ne pouvaient pas être consulté par le délégué de l'appelant. Une fois que j'ai changé l'extension deinternal
les délégués ont commencé à être appelé correctement.Voici mes 2 cents prises avec le même problème dans SWIFT 3:
Déclarer le délégué des méthodes de cette façon (note de la déclaration des arguments):
N'oubliez pas de mettre à la webview délégué de la propriété, soit dans Interface Builder (Sélectionnez la webview, faites glisser le délégué de sortie de la webview de l'Connexions Inspecteur OU par programme: auto.webview.delegate = self)
Il y a une solution détaillée pour Swift 3:
1) dans la déclaration de la classe d'écriture de la UIWebViewDelegate. Par exemple:
classe MyViewController: UIViewController, UIWebViewDelegate {
2) de cours en storyboard faire un lien vers votre UIViewController comme ceci:
@IBOutlet faible var webView: UIWebView!
3) dans le func viewDidLoad ajouter une seule ligne:
auto.webView.delegate = self
Rien de plus. Spécial pense à LinusGeffarth et LLIAJLbHOu pour l'idée.