我正在使用MPMoviePlayer来显示视频。我进入全屏,当点击完成按钮时,我希望它从我的视图中删除整个电影播放器。目前它只退出全屏模式。你如何跟踪被点击的doneButton或者我该如何解决这个问题呢?
答案 0 :(得分:25)
您可以在MPMoviePlayerDidExitFullscreenNotification
上添加通知处理程序,因为一旦用户点击DONE按钮就会发送通知。
初始化程序中的某个地方
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MPMoviePlayerDidExitFullscreen:) name:MPMoviePlayerDidExitFullscreenNotification object:nil];
现在实现该处理程序:
- (void)MPMoviePlayerDidExitFullscreen:(NSNotification *)notification
{
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerDidExitFullscreenNotification
object:nil];
[moviePlayerController stop];
[moviePlayerController.view removeFromSuperview];
}
答案 1 :(得分:6)
据我所知,单击“完成”按钮后,您将无法收到通知。但是,在单击完成按钮后,当电影播放器退出全屏时,您可以收到通知。为此,您使用MPMoviePlayerDidExitFullscreenNotification
要观察并处理此通知,您需要将以下代码粘贴到包含IBAction的类文件中(将其放在viewDidLoad
方法中):
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(exitedFullScreen) name:@"MPMoviePlayerDidExitFullscreenNotification" object:nil];
现在您需要在同一个类中创建exitedFullScreen
方法:
-(void) exitedFullScreen
{
//Do whatever you want here
}
最后,在您的viewDidUnload
方法中,粘贴以下行:
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"MPMoviePlayerDidExitFullscreenNotification" object:nil];
解释发生了什么:
viewDidLoad中的“addObserver”代码行确保负责处理moviePlayer的viewController正在侦听MPMoviePlayerDidExitFullScreen通知。
该行使得当通知到来时,将触发exitedFullScreen方法,在单击“完成”按钮时,您将放置要运行的代码。
在viewDidUnload中,将卸载viewController,因此您想要停止监听通知,因此删除了removeObserver部分。