Ho sempre pensato che Core Animation eseguisse animazioni sullo sfondo. Quando ho eseguito questo codice, le mie interazioni UI sono bloccati fino al termine di animazione:Perché è -animateWithDuration: ritardo: opzioni: animazioni: completamento: blocco dell'interfaccia utente?
[UIView animateWithDuration:4.5
delay:0
options:options
animations:^{
oldView.alpha = 0;
newView.alpha = 1;
}
completion:^(BOOL finished) {
if (finished) {
[oldView removeFromSuperview];
}
}];
Come si può vedere la durata è lungo quindi è chiaramente visibile che le interazioni dell'interfaccia utente sono bloccate mentre l'animazione.
L'interazione dell'interfaccia utente inizia a essere bloccata all'avvio dell'animazione e termina per essere bloccata al termine dell'animazione.
C'è un modo per avviare contemporaneamente un'animazione UIView in modo che le interazioni dell'interfaccia utente non siano bloccate?
EDIT per chiarire: So che l'interfaccia utente è bloccato perché non posso interagire con qualsiasi controllo sullo schermo perché questa animazione è in esecuzione. Questi altri controlli non sono correlati a ciò che viene animato e non si trovano sullo stesso ramo nella gerarchia della vista. L'intera interfaccia utente viene bloccata quando viene eseguita questa animazione. Quando lo imposto su 10 secondi, l'interfaccia utente viene bloccata per 10 secondi mentre viene eseguita l'animazione. Testato con iOS 4.2 su iPhone 4.
Come fai a sapere che è bloccato? A meno che una vista non abbia un alfa pari a zero, tutte le viste dietro di essa hanno un'interazione disabilitata. – CodaFi
Aggiornamento della domanda con chiarimenti. –