我的一个组件大量使用了 MPMoviePlayerController,最近出现了一个奇怪的错误;当使用标准用户界面时(例如 MPMoviePlayerController.controlStyle = MPMovieControlStyleFullscreen; )播放器永远不会改变播放/暂停按钮的状态(在我的屏幕截图中间的那个东西)。
功能保持不变,但用户界面不反射(reflect)播放器状态。
在播放电影时通过点击屏幕调出控件时,我看到一个播放符号。我期望的是播放器当前正在播放的暂停符号。当点击播放符号时,播放器进入暂停模式。然而,符号并没有改变。当再次点击该播放符号时,播放器将继续播放,正如预期的那样。
该问题已在 iOS5 中引入,在之前的 iOS 版本中未出现。
为了验证 iOS5 问题,我创建了一个没有使用我自己的框架的简约播放器,并且果然没有发生问题,因此它一定是我的代码触发了这个怪癖。不幸的是,我的代码非常大(大约 3k 行),所以我不能在这里发布。
我知道有人能够在没有源代码的情况下回答这个问题的机会非常渺茫,因为它似乎与我的代码直接相关。像我现在一样绝望,我只是捕获机会并希望有点奇迹,有人真的遇到了这样的问题并且知道如何触发/删除它。
Best Answer-推荐答案 strong>
好吧,看来我找到了答案(以及我所说的 iOS5 错误)...
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];
您将看到一个不会改变其支付/暂停状态的播放器 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];
我确实在 Apple 提交了一个错误(Radar Bug ID# 10484668) - 会及时通知您他们的答案。
OpenRadar Bug Report
关于iphone - MPMoviePlayer 标准界面播放/暂停状态反射问题,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/8229560/
|