iPhone - определить конец анимации - PullRequest
3 голосов
/ 28 апреля 2010

Как я могу определить конец анимации модального вида (когда я делаю увольнение)? (Я говорю о MFMailComposeViewController, который создан не мной ...)

Спасибо

Ответы [ 4 ]

5 голосов
/ 04 мая 2010

Ваш модальный контроллер представления имеет метод -viewDidDisappear:, который автоматически вызывается всякий раз, когда представление удаляется с экрана. Вы можете переопределить этот метод в вашем контроллере модального представления, чтобы делать все что угодно.

Кроме того, вы можете рассмотреть возможность реализации метода -viewDidAppear: в контроллере представления, чье представление раскрывается исчезновением вашего модального представления.

1 голос
/ 05 мая 2010

Вы можете создать подкласс MFMailComposeViewController и перегрузить его -viewDidDisappear:.

@interface MyCtrler : MFMailComposeViewController
@end
@implementation MyCtrler
-(void)viewDidDisappear:(BOOL)animated {
   [super viewDidDisappear:animated];
   // do anything you like
}
@end
0 голосов
/ 04 мая 2010

Обычно, чтобы получить уведомление о завершении анимации, вы устанавливаете делегата, отправляя setAnimationDelegate: в класс UIView.

Когда VC отклоняется с помощью [someVC dismissModalViewControllerAnimated:YES], вы не можете установить делегата анимации, но если вы вместо этого отправляете NO и делаете свою собственную анимацию вида VC, вы можете установить делегата и получить уведомление когда анимация завершена.

0 голосов
/ 04 мая 2010

Мне нужно было что-то делать после отклонения модального вида и только тогда, когда он уверен, что модальное представление действительно исчезло (полностью освобождено). Поэтому viewDidDisappear и его друзья в модальном представлении были для меня слишком ранними.

Самым простым, что я нашел, было просто отложить мой код с помощью NSTimer. Когда модальное представление вызывает своего делегата, и делегат вызывает удаление модального представления, оно также ставит в очередь код, который будет запущен, когда модальное представление исчезнет. Время было примерно 300 или 400 мс. (Есть ли способ получить фактическое время где-то?)

...