Cómo utilizar correctamente el delegado de webkit para iniciar y detener un spinner, OS X, OBJ-C

StackOverflow https://stackoverflow.com//questions/12679890

  •  12-12-2019
  •  | 
  •  

Pregunta

Parece que esto debería ser muy simple, pero soy bastante nuevo en Objective-C.Lo que quiero hacer es simplemente iniciar y detener un control giratorio mientras se carga mi WebView.Esta es una aplicación para OS X.Todo lo que he buscado es Cocoa Touch, estoy usando solo Cocoa.En mi AppDelegate.m tengo métodos que inician y detienen el control giratorio (esto funciona, lo probé).

-(IBAction)goSpin:(id)sender
{
    [spinner startAnimation:self];
}

-(IBAction)stopSpin:(id)sender
{
    [spinner stopAnimation:self];
}

También tengo los dos métodos delegados para webView, que anulé.

-(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame
{
    [self goSpin:self];
}

-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
    [self stopSpin:self];
}

Básicamente, me gustaría saber cómo consigo que mi webView configure su delegado.Por lo general, tengo que hacer algo en el archivo .h, pero no puedo encontrar ninguna referencia que indique cuál es el delegado de webKit que funcionaría para esto.Cualquier ayuda sería apreciada.

¿Fue útil?

Solución

El

-(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame

y

-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame

Los métodos son parte del Protocolo WebFrameLoadDelegate.

Vista web tiene un frameLoadDelegate propiedad.Configúrelo en su WebView instancia llamando [webView setFrameLoadDelegate:delegate], dónde delegate es un NSObject que implementa los dos métodos (será más fácil para usted hacer self el frameLoadDelegate aquí).Dado que WebFrameLoadDelegate es un protocolo informal, delegate debería declarar los dos métodos en su archivo .h, en lugar de agregar <WebFrameLoadDelegate> a su declaración de clase como si fuera un protocolo formal.

Otros consejos

Puede anular estos métodos de delegado de WebView para iniciar y detener un 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.


 }

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top