Pergunta

Eu tenho este código:

[UIView animateWithDuration:0.8
                             animations:^{ 
                                 [self methodToRun];
                             } 
                             completion:^(BOOL finished){
                                 [self anotherMethod];
                             }];

Embora haja coisas em methodToRun, o aplicativo simplesmente não espera os 0,8 segundos e prossegue para executar anotherMethod.Existe alguma maneira de simplesmente conseguir esperar 0,8 segundo antes de executar a segunda parte?

Foi útil?

Solução

Você pode adicionar uma chamada para [NSTimer performSelector:withObject:afterDelay] em vez de depender do parâmetro de conclusão.

Outras dicas

Não abuse de um bloco de animação como esse.Se você realmente deseja um atraso, use o método ao qual Ken está vinculado ou até uma forma mais fácil é usar o GCD (iOS 4+).

Aqui está um exemplo usando um atraso de 0.8 como você usou em sua pergunta:

dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * 0.8); 
dispatch_after(delay, dispatch_get_main_queue(), ^(void){
    [self anotherMethod];
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top