如何检测模态视图动画的结束(当我解除时)? (我说的是MFMailComposeViewController,它不是我自己创建的......)
由于
答案 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视图的动画,则可以设置委托并在动画完成时收到通知。