Domanda

Come faccio a rilevare la fine dell'animazione di una vista modale (quando faccio un respingere)? (Sto parlando MFMailComposeViewController che non è stato creato da me ...)

Grazie

È stato utile?

Soluzione

Il controller di vista modale ha un metodo -viewDidDisappear: che viene richiamato automaticamente ogni volta che la visualizzazione viene rimosso dallo schermo. È possibile ignorare questo metodo nel controller di vista modale a fare quello che vuoi.

Inoltre, si può prendere in considerazione l'implementazione del metodo -viewDidAppear: nel controller della vista di cui vista viene rivelato dal tuo vista modale scomparendo.

Altri suggerimenti

È possibile sottoclasse MFMailComposeViewController e sovraccaricare la sua -viewDidDisappear:.

@interface MyCtrler : MFMailComposeViewController
@end
@implementation MyCtrler
-(void)viewDidDisappear:(BOOL)animated {
   [super viewDidDisappear:animated];
   // do anything you like
}
@end

avevo bisogno di fare qualcosa dopo che respinge una vista modale, e solo quando è sicuro che la vista modale è davvero andato (stato completamente dealloc-ndr). Così viewDidDisappear e dei suoi amici nel vista modale erano troppo presto per me.

Il modo più semplice che ho trovato è stato quello di ritardare solo il mio codice con un NSTimer. Quando vista modale chiama suo delegato e le invoca delegato eliminando la vista modale, si mette in coda anche il codice da eseguire quando la vista modale è andato. Il momento era qualcosa come 300 ms o 400 ms. (C'è un modo per recuperare i tempi effettivi da qualche parte?)

Normalmente per essere avvisati quando un'animazione è completa si imposta un delegato con l'invio di setAnimationDelegate: alla classe UIView.

Quando un VC è respinto con [someVC dismissModalViewControllerAnimated:YES] non è possibile impostare il delegato di animazione, ma se si invia NO invece e fare la tua propria animazione di vista del VC si possono impostare il delegato ed essere avvisato quando l'animazione è stata completata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top