Como usar corretamente o delegado do webkit para iniciar e parar um spinner, OS X, OBJ-C

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

  •  12-12-2019
  •  | 
  •  

Pergunta

Parece que isso deveria ser muito simples, mas sou muito novo no Objective-C.O que eu quero fazer é simplesmente iniciar e parar um botão giratório enquanto meu WebView está carregando.Este é um aplicativo OS X.Tudo que procurei é por Cocoa Touch, estou usando apenas Cocoa.No meu AppDelegate.m eu tenho métodos que iniciam e param o spinner (Isso funciona, eu testei).

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

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

Também tenho os dois métodos delegados para webView, que substituí.

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

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

Basicamente, gostaria de saber como faço para que meu webView defina seu delegado.Normalmente tenho que fazer algo no arquivo .h, mas não consigo encontrar nenhuma referência que liste qual é o delegado do webKit que funcionaria para isso.Qualquer ajuda seria apreciada.

Foi útil?

Solução

O

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

e

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

métodos fazem parte do Protocolo WebFrameLoadDelegate.

Visualização da Web tem um frameLoadDelegate propriedade.Coloque-o no seu WebView instância chamando [webView setFrameLoadDelegate:delegate], onde delegate é um NSObject que implementa os dois métodos (será mais fácil para você fazer self o frameLoadDelegate aqui).Como WebFrameLoadDelegate é um protocolo informal, delegate deve declarar os dois métodos em seu arquivo .h, em vez de adicionar <WebFrameLoadDelegate> à sua declaração de classe como com um protocolo formal.

Outras dicas

Você pode substituir esses métodos delegados de webview para iniciar e parar um controle giratório.

- (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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top