更新:不再出现在 iOS 6 beta 1 上
我目前正致力于使用新的 iOS 5 SDK 调整现有的 iOS 4 应用程序。 在读取 Youtube 视频的模态视图 Controller 中呈现 UIWebView 时,我发现了一个新的崩溃。
开始阅读视频没问题,但是当我尝试将其设置为全屏时,出现以下异常:
Exception: UIViewControllerHierarchyInconsistency,
child view controller:<UIViewController: 0x6aef180>
should have parent view controller:<WebViewController: 0x6a706c0>
but requested parent is:<MPInlineVideoViewController: 0x6ae5d40>
这是我在主视图 Controller 中实例化和呈现模态视图 Controller 的方式:
- (IBAction)buttonReleased:(id)sender
{
WebViewController *webVC = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:[NSBundle mainBundle]];
webVC.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
webVC.modalPresentationStyle = UIModalPresentationPageSheet;
[self presentModalViewController:webVC animated:YES];
}
我使用 UIModalPresentationPageSheet 作为 modalPresentationStyle,当我将此值设置为 UIModalPresentationFullScreen 时,错误不再出现。
在我的模态 WebViewController 中,这是我加载 Youtube 视频的方式:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.youtube.com/watch?v=bDlm3eLRut0"]]];
}
关于这个问题有什么想法吗? 如果需要,我可以提供完整的示例代码来隔离此崩溃。
谢谢!
最佳答案
这些控制台警告是由于正在加载 Mac 上的音频组件引起的。它是模拟器而不是模拟器——模拟器仍然是 Mac OS X 应用程序,因此在使用音频时它会加载 Mac 应用程序加载的所有音频扩展。当我在模拟器中为我的 Bandcamp 应用程序 Kumbaya 测试音频流时,就会发生这种情况。如果您不想看到这些问题,请在设备上进行测试。
如果你愿意,你可以用以下方法包装你的音频方法:
#if ! TARGET_IPHONE_SIMULATOR
#endif
在模拟器中禁用它们。
关于iOS5:模式 UIViewController 播放 Youtube 视频时 UIWebView 出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7905258/