O bloco de animação UIView não está esperando
-
27-10-2019 - |
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?
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