So verwenden Sie den Webkit-Delegaten richtig zum Starten und Stoppen eines Spinners, OS X, OBJ-C
-
12-12-2019 - |
Frage
Es scheint, als ob das so einfach sein sollte, aber ich bin ziemlich neu bei Objective-C.Ich möchte einfach einen Spinner starten und stoppen, während meine Webansicht geladen wird.Dies ist eine OS X-App.Alles, wonach ich gesucht habe, ist für Cocoa Touch, ich verwende nur Cocoa.In meinem App-Delegat.m Ich muss Methoden verwenden, die den Spinner starten und stoppen (Das funktioniert, ich habe es getestet).
-(IBAction)goSpin:(id)sender
{
[spinner startAnimation:self];
}
-(IBAction)stopSpin:(id)sender
{
[spinner stopAnimation:self];
}
Ich habe auch die beiden Delegatenmethoden für WebView, die ich überschrieben habe.
-(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame
{
[self goSpin:self];
}
-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
[self stopSpin:self];
}
Grundsätzlich würde ich gerne wissen, wie ich mein WebView dazu bringe, seinen Delegaten festzulegen.Normalerweise muss ich etwas in der tun.h-Datei, aber ich kann keine Referenzen finden, die auflisten, was der WebKit-Delegat ist, der dafür funktionieren würde.Jede Hilfe wäre dankbar.
Lösung
Der
-(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame
und
-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
methoden sind Teil der WebFrameLoadDelegate-Protokoll.
Webansicht hat eine frameLoadDelegate
Eigenschaft.Stellen Sie es auf Ihre WebView
instanz durch Aufruf [webView setFrameLoadDelegate:delegate]
, wo delegate
ist ein NSObject, das die beiden Methoden implementiert (es wird für Sie am einfachsten zu machen sein self
das frameLoadDelegate hier).Da WebFrameLoadDelegate ein informelles Protokoll ist, delegate
sollte die beiden Methoden in its deklarieren.h-Datei, anstatt hinzuzufügen <WebFrameLoadDelegate>
zu seiner Klassendeklaration wie bei einem formalen Protokoll.
Andere Tipps
Sie können diese WebView-Delegierten-Methoden überschreiben, um einen Spinner zu starten und zu stoppen. generasacodicetagpre.