Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如果视图控制器转换太快,应用程序将崩溃_Objective C_Ios5_Uiviewcontroller - Fatal编程技术网

Objective c 如果视图控制器转换太快,应用程序将崩溃

Objective c 如果视图控制器转换太快,应用程序将崩溃,objective-c,ios5,uiviewcontroller,Objective C,Ios5,Uiviewcontroller,我使用视图控制器包含在6个视图控制器之间进行转换。使用分段控件控制过渡。除非在上一次转换的动画完成之前按下分段控件上的按钮,否则这一切都可以正常工作。在这种情况下,应用程序会崩溃 '调用-[UIViewController transitionFromViewController:toViewController:duration:options:animations:completion:]时,子视图控制器和必须具有公共父视图控制器' 代码是: [self transitionFromView

我使用视图控制器包含在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;
                        }];

我应该禁用分段控件直到动画完成吗?或者它们是避免此问题的更好方法吗?

您可以通过调用

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


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

修复它。谢天谢地,仅仅禁用与分段控件本身的交互是不够的(
self.segmentedControl.userInteractionEnabled=NO;
)?这似乎对我的用例有效。@RobertAtkins,如果它足以满足您的需求,那么肯定有效。我的答案是防止崩溃的最极端的解决方案,但当然不是理想的解决方案(或掩盖问题代码的借口);-)