在我的应用程序中,几乎可以从任何地方打开视频。视频播放器是一个 UIViewController 子类,它包含一个 MPMoviePlayerController 并呈现在我的应用程序的 rootViewController 上。
我使用以下代码在我的应用程序中显示一个 ViewController,自定义转换为
// When the glitch occurs, the rootViewController still has a presentedViewController
if (self.rootViewController.presentedViewController)
[self.rootViewController dismissViewControllerAnimated:NO completion:^{}];
CATransition* transition = [CATransition animation];
transition.duration = 0.3;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;
UIWindow* window = self.appDelegate.window;
[window.layer addAnimation:transition forKey:nil];
[self.rootViewController presentViewController:viewController animated:NO completion:^{}];
在 99% 的情况下,这都能正常工作,并获得预期的结果,但有时,我真的很随机地遇到了一个非常奇怪的故障。视频播放器 ViewController 是可见的,并且我的应用程序的 rootViewController 从我的视频播放器顶部的右侧滑入。
所以基本上,过渡是应用于 rootViewController 而不是视频 ViewController。此时无法在我的应用程序中打开视频,因为 rootViewController 在视频播放器 ViewController 之上执行从右到左的转换。
我怎样才能防止这种故障发生?在呈现一个新的之前,我试图从 rootViewController 中关闭任何活动的presentedViewController,但这并不能解决问题。
提前致谢。