2011-11-22 99 views
2

我的一个组件大量使用MPMoviePlayerController,并且最近出现了一个奇怪的错误;当使用标准用户界面(例如MPMoviePlayerController.controlStyle = MPMovieControlStyleFullscreen;时,玩家永远不会改变播放/暂停按钮(在屏幕截图中间的那个东西)的状态。MPMoviePlayer标准接口播放/暂停状态反射问题

enter image description here

的功能保持不变,但球员状态不是由UI体现。

当通过点击屏幕上同时播放影片时带来了控制,我看戏码。我期望的是当玩家正在玩时暂停符号。当点击播放符号时,播放器进入暂停模式。但是符号不会改变。当再次点击该播放符号时,播放器继续播放,就像预期的那样。

的问题已经引入了iOS5的和以前的IOS版本并没有出现。

用于验证iOS5的问题,我创建了是不是用我自己的框架,果然没有出现问题的一个简约的球员,因此它必须是我的代码触发这个怪癖。不幸的是,我的代码非常大(约3千行),所以我不能在这里发布。

我知道有人能够回答没有源代码这个问题的机会相当渺茫,因为它似乎直接连接到我的代码。我现在绝望,我只是抓住机会,希望有一点奇迹,有人真的有这样的问题,并知道如何触发/删除它。

回答

1

嗯,看来我找到了答案(和我所说的iOS5中的bug)...

原因的MPMoviePlayerController得到刺激上的播放按钮的状态简直是我的初始化代码的顺序。

对于触发这个问题,所有你需要做的就是运行这个代码;

moviePlayer = [[MPMoviePlayerController alloc] init]; 
moviePlayer.shouldAutoplay = YES; 
moviePlayer.fullscreen = NO; 
moviePlayer.view.frame = self.view.bounds; 
moviePlayer.currentPlaybackTime = 0.0; 
moviePlayer.initialPlaybackTime = 0.0; 
[moviePlayer setContentURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]]; 
[self.view addSubview:moviePlayer.view]; 

您将看到一个不改变Pay/Pause状态的播放器UI。

把事情再正常工作,你必须设定播放时间之前,移动电话setContentURL。

moviePlayer = [[MPMoviePlayerController alloc] init]; 
moviePlayer.shouldAutoplay = YES; 
moviePlayer.fullscreen = NO; 
moviePlayer.view.frame = self.view.bounds; 
[moviePlayer setContentURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]]; 
moviePlayer.currentPlaybackTime = 0.0; 
moviePlayer.initialPlaybackTime = 0.0; 
[self.view addSubview:moviePlayer.view]; 

我没有在苹果公司(雷达错误ID#10484668)提交一个错误 - 将让你张贴在他们的答案。

OpenRadar Bug Report

+0

我遇到了同样的问题,它确实与setContentPlaybackTime函数有关 – WilsonL

1

我也经常被看到这种行为,但不幸的是简单地切换调用的顺序setContentURL和设置初始和播放时间并没有区别。

我发现我做错了。我将播放时间设置为-1以指示当我应该指定为零时流的开始。改变这一点解决了我的问题。