iPhone - 检测动画的结束

时间:2010-04-28 10:14:04

标签: iphone objective-c animation modal-view

如何检测模态视图动画的结束(当我解除时)? (我说的是MFMailComposeViewController,它不是我自己创建的......)

由于

4 个答案:

答案 0 :(得分:5)

您的模态视图控制器具有-viewDidDisappear:方法,只要从屏幕上删除视图,就会自动调用该方法。您可以在模态视图控制器中覆盖此方法,以执行您喜欢的任何操作。

此外,您可能需要考虑在视图控制器中实现-viewDidAppear:方法,其视图会因模态视图消失而显示。

答案 1 :(得分:1)

您可以继承MFMailComposeViewController并重载其-viewDidDisappear:

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

答案 2 :(得分:0)

我在解雇模态视图之后需要做一些事情,并且只有当它确定模态视图真的消失时(完全解除分配)。所以viewDidDisappear及其在模态视图中的朋友对我来说太早了。

我发现最简单的方法是使用NSTimer延迟我的代码。当模态视图调用其委托并且委托调用删除模态视图时,它还会在模态视图消失时将要运行的代码排队。时间是300毫秒或400毫秒。 (有没有办法从某个地方检索实际时间?)

答案 3 :(得分:0)

通常在动画完成时收到通知,通过将setAnimationDelegate:发送到UIView类来设置委托。

当使用[someVC dismissModalViewControllerAnimated:YES]解散VC时,您无法设置动画委托,但如果您发送NO而不是自己制作VC视图的动画,则可以设置委托并在动画完成时收到通知。