Iphone iOS PresentMoviePlayServiceController驱动的can';不能使用同一个viewController调用两次
因此,我尝试使用PresentMoviePlayServiceController方法在我自己的视图控制器中显示MPMoviePlayServiceController 但是,单击左上角的蓝色“完成”按钮后,当我再次显示相同的viewController时(这样我就可以恢复视频,而无需创建另一个MPMoviePlayerViewController实例),如果几秒钟后让控件自行消失,则这些控件将不再工作。如果在控件消失之前与它们进行交互,这些控件仍将起作用,但一旦它们自行消失,在点击视频时,您就无法再将其恢复。这在设备和模拟器上都会发生 简化代码:Iphone iOS PresentMoviePlayServiceController驱动的can';不能使用同一个viewController调用两次,iphone,objective-c,ios,uiviewcontroller,mpmovieplayercontroller,Iphone,Objective C,Ios,Uiviewcontroller,Mpmovieplayercontroller,因此,我尝试使用PresentMoviePlayServiceController方法在我自己的视图控制器中显示MPMoviePlayServiceController 但是,单击左上角的蓝色“完成”按钮后,当我再次显示相同的viewController时(这样我就可以恢复视频,而无需创建另一个MPMoviePlayerViewController实例),如果几秒钟后让控件自行消失,则这些控件将不再工作。如果在控件消失之前与它们进行交互,这些控件仍将起作用,但一旦它们自行消失,在点击视频时,您就
- (void) startPlayback
{
if (self.videoViewController == nil)
{
self.videoViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:self.videoUrl]];
}
// present the video player
[self presentMoviePlayerViewControllerAnimated:self.videoViewController];
}
假设startPlayback是一个委托方法或视图控制器中的某个对象,它由一个按钮触发。在这种情况下,Self将引用视图控制器
因此,有了这个,它将带来一个视频播放器,它可以完美地工作。然后,只要我稍等一下,这些控件就会消失,我可以通过点击视频将它们带回来。然后,我可以使用左上角的“完成”按钮关闭此视频播放器。一旦我关闭它,然后我就可以带回视频视图控制器。视频仍将播放,但现在,当我等待一段时间,控制消失时,我无法再通过点击屏幕打开控制,从而将自己困在视频播放器中
我已经找到了各种各样的方法来连接“完成”按钮,但它并没有真正允许我重用视频播放器。例如:
// Remove the observer so that the blue button doesn't close the viewController
[[NSNotificationCenter defaultCenter] removeObserver:self.videoViewController name:MPMoviePlayerPlaybackDidFinishNotification object:self.videoViewController.moviePlayer];
// Add itself as an observer
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieEnded:) name:MPMoviePlayerPlaybackDidFinishNotification
object:self.videoViewController.moviePlayer];
在my movieEnded:,我可以通过以下方式关闭电影视图控制器:
[self dismissMoviePlayerViewControllerAnimated];
但当我再次尝试演示viewController时,视频播放器在加载时卡住了。。。永远
有什么想法吗?尝试使用解除锁定方法停止视频播放器,例如:[self.videoViewController stop];[视频控制器释放];videoViewController=nil;在dealloc方法中,我认为Ramshad是正确的,您可以尝试[self.videoViewController stop];在您关闭电影播放器控制器之前