2

我正在使用视图控制器包含在 6 个视图控制器之间进行转换。使用分段控件控制转换。除非在前一个过渡的动画完成之前按下分段控件上的按钮,否则这一切都可以正常工作。在这种情况下,应用程序崩溃

'子视图控制器和调用时必须有一个共同的父视图控制器 -[UIViewController transitionFromViewController:toViewController:duration:options:animations:completion:]'

代码是:

[self transitionFromViewController:currentVC
                  toViewController:newVC
                          duration:1.0
                           options:UIViewAnimationOptionTransitionFlipFromRight
                        animations:nil
                        completion:^(BOOL finished) {
                            [currentVC removeFromParentViewController];
                            [newVC didMoveToParentViewController:self];
                            currentVC = newVC;
                        }];

我应该在动画完成之前禁用分段控制吗?或者他们是避免这个问题的更好方法吗?

4

1 回答 1

2

您可以通过调用禁用和重新启用应用程序交互

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
[[UIApplication sharedApplication] endIgnoringInteractionEvents];

动画分别开始和结束的时间。然后,应用程序将忽略所有交互(触摸事件),直到动画完成,因此片段在安全之前永远不会收到事件(动画完成)。

我认为这种方法也用于一些内置的容器控制器。但是要注意动画持续时间。如果动画需要很长时间,可能看起来应用程序响应不佳,这会损害用户体验

于 2013-09-16T14:54:33.567 回答