Sto avviando un ingrandimento animato quando viene toccata un'immagine, quindi ridimensionandola alla dimensione normale quando viene rilasciata. Usando setAnimationBeginsFromCurrentState: YES, l'effetto di zoom è piacevole e regolare se si solleva il dito parzialmente attraverso l'animazione.iPhone SDK - Come posso sapere quando è terminata un'animazione?
Tuttavia, ciò che voglio fare è "bloccare" la dimensione più grande sul posto se l'immagine è stata toccata per un tempo sufficiente per il completamento dell'animazione, ma lasciare che si riduca come normale se si rilascia prematuramente.
C'è un modo per sapere se attualmente è in corso un'animazione o se è stata completata una particolare animazione?
Credo di poterlo fare con un performSelector: afterDelay: call in touchStarted, con un ritardo uguale alla lunghezza dell'animazione e annullato se touchEnded arriva troppo presto, ma non riesco a immaginare che sia il modo migliore ...?
Mi c'è voluto un po 'per realizzare questo in realtà ha fatto quello che volevo. animationDidStop viene chiamato se lo zoom arriva dove stava andando, o se l'animazione restringente prende il sopravvento. Tuttavia, il valore di finito ci dice se è finito come originariamente richiesto. Posso suggerire di modificare il corpo dell'animazioneDidStop nel tuo esempio su: if ([finito boolValue]) { NSLog (@ "Animazione finita!"); } Questa è quindi una risposta perfetta :) –