Come utilizzare correttamente il delegato WebKit per iniziare e fermare uno spinner, OS X, OBJ-C
-
12-12-2019 - |
Domanda
Sembra che questo dovrebbe essere così semplice, ma sono abbastanza nuovo all'obiettivo-c.Quello che voglio fare è semplicemente iniziare e fermare uno spinner mentre il mio Webview sta caricando.Questa è un'app per OS X.Tutto ciò che ho cercato è per il tocco di cacao, sto usando solo il cacao.Nel mio AppDelegate.m devo metodi che iniziano e fermano lo spinner (questo funziona, l'ho testato).
-(IBAction)goSpin:(id)sender
{
[spinner startAnimation:self];
}
-(IBAction)stopSpin:(id)sender
{
[spinner stopAnimation:self];
}
.
Ho anche i due metodi delegati per WebView, che ho invaso.
-(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame
{
[self goSpin:self];
}
-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
[self stopSpin:self];
}
.
Fondamentalmente, vorrei sapere come ottengo il mio Webview per impostare il suo delegato.Di solito devo fare qualcosa nel file .h, ma non riesco a trovare alcun riferimento che elenca ciò che il Delegato WebKit è che funzionerebbe per questo.Qualsiasi aiuto sarebbe apprezzato.
Soluzione
-(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame
.
e
-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
.
Metodi fanno parte del Protocollo di webframeloaddelegate .
Webview ha una proprietà frameLoadDelegate
.Impostalo sull'istanza WebView
chiamando [webView setFrameLoadDelegate:delegate]
, in cui delegate
è un Nsobject che implementa i due metodi (sarà più facile per te rendere qui self
il frameloadelegato qui).Dal momento che WebfraMeloadDelegate è un protocollo informale, delegate
dovrebbe dichiarare i due metodi nel suo file .h, anziché aggiungere <WebFrameLoadDelegate>
alla sua dichiarazione di classe come con un protocollo formale.
Altri suggerimenti
È possibile sovrascrivere questi metodi Delegate WebView per iniziare e fermare uno spinner.
- (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.
}
.