MPMoviePlayer完成按钮问题

Jac*_*e11 9 iphone objective-c mpmovieplayercontroller ios

我正在使用MPMoviePlayer来显示视频.我进入全屏,当点击完成按钮时,我希望它从我的视图中删除整个电影播放器​​.目前它只退出全屏模式.你如何跟踪被点击的doneButton或者我该如何解决这个问题呢?

Til*_*ill 25

您可以通过添加通知处理程序来实现,MPMoviePlayerDidExitFullscreenNotification因为一旦用户点击DONE按钮就会发送通知.

初始化器中的某处

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MPMoviePlayerDidExitFullscreen:) name:MPMoviePlayerDidExitFullscreenNotification object:nil];
Run Code Online (Sandbox Code Playgroud)

现在实现该处理程序:

- (void)MPMoviePlayerDidExitFullscreen:(NSNotification *)notification
{
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:MPMoviePlayerDidExitFullscreenNotification 
                                                  object:nil];

    [moviePlayerController stop];
    [moviePlayerController.view removeFromSuperview];
}
Run Code Online (Sandbox Code Playgroud)


Sid*_*Sid 6

据我所知,单击"完成"按钮时,您将无法收到通知.但是,在单击完成按钮后,当电影播放器​​退出全屏时,您可以收到通知.为此,您使用MPMoviePlayerDidExitFullscreenNotification

要观察并处理此通知,您需要将以下代码粘贴到包含IBAction的类文件中(将其放在viewDidLoad方法中):

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(exitedFullScreen) name:@"MPMoviePlayerDidExitFullscreenNotification" object:nil];
Run Code Online (Sandbox Code Playgroud)

现在,您需要exitedFullScreen在同一个类中创建该方法:

-(void) exitedFullScreen
{
     //Do whatever you want here
}
Run Code Online (Sandbox Code Playgroud)

最后,在您的viewDidUnload方法中,粘贴以下行:

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"MPMoviePlayerDidExitFullscreenNotification" object:nil];
Run Code Online (Sandbox Code Playgroud)

要解释发生了什么:

viewDidLoad中的"addObserver"代码行确保负责处理moviePlayer的viewController正在侦听MPMoviePlayerDidExitFullScreen通知.

该行使得当通知到来时,将触发exitedFullScreen方法,在单击"完成"按钮时,您将放置要运行的代码.

在viewDidUnload中,将卸载viewController,因此您希望停止侦听通知,因此removeObserver部分.