【发布时间】:2011-05-26 17:24:48
【问题描述】:
我正在使用 MPMoviePlayer 来显示视频。我进入全屏模式,当单击完成按钮时,我希望它从我的视图中删除整个电影播放器。目前它只退出全屏模式。你如何跟踪被点击的 doneButton 或者我该如何解决这个问题?
【问题讨论】:
标签: iphone objective-c ios mpmovieplayercontroller
我正在使用 MPMoviePlayer 来显示视频。我进入全屏模式,当单击完成按钮时,我希望它从我的视图中删除整个电影播放器。目前它只退出全屏模式。你如何跟踪被点击的 doneButton 或者我该如何解决这个问题?
【问题讨论】:
标签: iphone objective-c ios mpmovieplayercontroller
您可以通过在MPMoviePlayerDidExitFullscreenNotification 上添加通知处理程序来做到这一点,因为一旦用户点击完成按钮就会发送通知。
在你的初始化程序中的某个地方
[[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];
}
【讨论】:
据我所知,您不会在单击“完成”按钮时收到通知。但是,当单击“完成”按钮后电影播放器退出全屏时,您会收到通知。为此,您使用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 部分。
【讨论】:
DONE,当用户按下它时我想退出全屏。