【发布时间】:2015-03-12 18:00:30
【问题描述】:
我有一个UIViewController,它通过情节提要中的模态转场呈现(嵌入在UINavigationController 中)。我正在尝试在模态演示文稿旁边为键盘外观设置动画(此逻辑超出了问题的范围)。
我在viewWillAppear: 中使用[self.transitionCoordinator animateAlongsideTransition:completion:] 来执行此操作,但我注意到动画块从未被调用。因此,一些日志记录让我看到唯一一次动画块在新创建的模态视图控制器上被调用是在viewDidLoad:期间。
@implementation MyModalViewController
- (void)viewDidLoad {
NSLog(@"%s", __PRETTY_FUNCTION__);
[super viewDidLoad];
[self.transitionCoordinator animateAlongsideTransition:^ (id <UIViewControllerTransitionCoordinatorContext> context) {
NSLog(@"%s ANIMATION", __PRETTY_FUNCTION__);
} completion:^ (id <UIViewControllerTransitionCoordinatorContext> context) {
NSLog(@"%s COMPLETION", __PRETTY_FUNCTION__);
}];
}
- (void)viewWillAppear:(BOOL)animated {
NSLog(@"%s", __PRETTY_FUNCTION__);
[super viewWillAppear:animated];
[self.transitionCoordinator animateAlongsideTransition:^ (id <UIViewControllerTransitionCoordinatorContext> context) {
NSLog(@"%s ANIMATION", __PRETTY_FUNCTION__);
} completion:^ (id <UIViewControllerTransitionCoordinatorContext> context) {
NSLog(@"%s COMPLETION", __PRETTY_FUNCTION__);
}];
}
- (void)viewWillDisappear:(BOOL)animated {
NSLog(@"%s", __PRETTY_FUNCTION__);
[super viewWillDisappear:animated];
[self.transitionCoordinator animateAlongsideTransition:^ (id <UIViewControllerTransitionCoordinatorContext> context) {
NSLog(@"%s ANIMATION", __PRETTY_FUNCTION__);
} completion:^ (id <UIViewControllerTransitionCoordinatorContext> context) {
NSLog(@"%s COMPLETION", __PRETTY_FUNCTION__);
}];
}
@end
这个控制器的模态表示的输出是:
SampleAnimatedTransition[43690:1768171] -[MyModalViewController viewDidLoad]
SampleAnimatedTransition[43690:1768171] __36-[MyModalViewController viewDidLoad]_block_invoke ANIMATION
SampleAnimatedTransition[43690:1768171] -[MyModalViewController viewWillAppear:]
SampleAnimatedTransition[43690:1768171] __36-[MyModalViewController viewDidLoad]_block_invoke_2 COMPLETION
SampleAnimatedTransition[43690:1768171] __40-[MyModalViewController viewWillAppear:]_block_invoke_2 COMPLETION
但在解雇期间输出是:
SampleAnimatedTransition[43690:1768171] -[MyModalViewController viewWillDisappear:]
SampleAnimatedTransition[43690:1768171] __43-[MyModalViewController viewWillDisappear:]_block_invoke ANIMATION
SampleAnimatedTransition[43690:1768171] __43-[MyModalViewController viewWillDisappear:]_block_invoke_2 COMPLETION
注意viewWillAppear: 中没有调用动画块,更烦人在调用viewWillAppear: 之前调用了viewDidLoad: 中的动画块。
谁能帮我获取要调用的动画块viewWillAppear:?
请注意,当我将另一个视图控制器推到导航控制器上并返回时,viewWillAppear: 中的动画块被调用。。
如果有帮助,我发了Sample Project。
更新
已提交为rdar://20171073
【问题讨论】:
标签: ios objective-c uiviewcontroller modalviewcontroller uiviewanimationtransition