Comment utiliser correctement le webkit délégué pour démarrer et arrêter un spinner, OS X, OBJ-C
-
12-12-2019 - |
Question
Il semble que ce devrait être si simple, mais je suis assez nouveau à l'Objective-C.Ce que je veux faire est tout simplement de démarrer et d'arrêter un spinner pendant que mon WebView est en cours de chargement.C'est une app OS X.Tout ce que j'ai recherché est de Cocoa Touch, je suis juste en utilisant le Cacao.Dans mon AppDelegate.m-je les méthodes de démarrage et d'arrêt de la toupie (Cela fonctionne, je l'ai testé).
-(IBAction)goSpin:(id)sender
{
[spinner startAnimation:self];
}
-(IBAction)stopSpin:(id)sender
{
[spinner stopAnimation:self];
}
J'ai aussi les deux délégué méthodes pour webView, qui j'ai également changé.
-(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame
{
[self goSpin:self];
}
-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
[self stopSpin:self];
}
En gros, je voudrais savoir comment je reçois mon webView à l'ensemble de délégué.D'habitude je dois faire quelque chose dans le .h fichier, mais je ne trouve pas de références que la liste de ce que le webKit délégué qui travaillent pour cela.Toute aide serait appréciée.
La solution
L'
-(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame
et
-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
méthodes font partie de la WebFrameLoadDelegate Protocole.
WebView a un frameLoadDelegate
de la propriété.Déposez-la sur votre WebView
exemple en appelant [webView setFrameLoadDelegate:delegate]
, où delegate
est un NSObject qui implémente les deux méthodes (il sera plus facile pour vous de faire self
le frameLoadDelegate ici).Depuis WebFrameLoadDelegate est un protocole informel, delegate
déclarer les deux méthodes dans sa .h fichier, plutôt que d'en ajouter <WebFrameLoadDelegate>
à sa déclaration de classe, comme avec un protocole officiel.
Autres conseils
Vous pouvez remplacer ces méthodes de déléguement WebView pour démarrer et arrêter une fileuse.
- (void)webViewDidStartLoad:(UIWebView *)webView{
// In this method you have to start a spinner.
}
- (void)webViewDidFinishLoad:(UIWebView *)webView{
// In this method you have to stop the current spinner.
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
// In this method you have to stop the current spinner.
}