如何停止MPMoviePlayerViewController的自动上moviePlaybackDi

2019-07-03 21:51发布

其中有模式提出通过MPMoviePlayerViewController presentMoviePlayerViewControllerAnimated:当它的内容播放完毕后自动解散本身。

我试图禁用它,因为我想稍后播放其他内容。 然而,即使我注册到NSNotificationCenter与[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:playerVC.moviePlayer]; 并设置一些其他的内容,但仍驳回。

我怎样才能自动解除自动停止MPMoviePlayerViewController?

更新:

作为澄清,这个问题只是有关删除自动解雇,而不是关于处理残疾人“完成”按钮。 所选择的答案反映。 这是由设计,因为我们假设开发人员添加自己的解聘MPMoviePlayerViewController的手段。 然而,@bickster完成‘按钮的最佳答案交易’为好。

Answer 1:

由于该博客文章我想通了,MPMoviePlayerViewController在创建时自动将其自身注册为NSNotificationCenter。 你必须先删除这个注册,它会自动停止解雇自己。

// Initialize the movie player view controller with a video URL string
MPMoviePlayerViewController *playerVC = [[[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:aVideoUrl]] autorelease];
// Remove the movie player view controller from the "playback did finish" notification observers
[[NSNotificationCenter defaultCenter] removeObserver:playerVC  name:MPMoviePlayerPlaybackDidFinishNotification object:playerVC.moviePlayer];


Answer 2:

您可以使用此代码来自动解除停止视图 - 控制和捕获事件,当用户点击“完成”按钮,这样你就可以自己关闭该视图 - 控制。

第1步 - 页头一个MPMoviePlayerViewController

videoPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[[NSURL alloc ]initWithString:[aURL];

第2步 - 删除默认MPMoviePlayerPlaybackDidFinishNotification观察者和添加自己的

[[NSNotificationCenter defaultCenter] removeObserver:videoPlayer
name:MPMoviePlayerPlaybackDidFinishNotification object:videoPlayer.moviePlayer];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(videoFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:videoPlayer.moviePlayer];

第3步 - 现在viewcontroler

[self presentMoviePlayerViewControllerAnimated:videoPlayer];

第4步 - 添加videoFinish:方法

-(void)videoFinished:(NSNotification*)aNotification{
    int value = [[aNotification.userInfo valueForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] intValue];
    if (value == MPMovieFinishReasonUserExited) {
        [self dismissMoviePlayerViewControllerAnimated];
    }
}


Answer 3:

你可以尝试这样的事情。

当完成的MPMoviePlayerController播放视频,你收到通知你的方法movieFinishedCallback:implemect

       [playerVC.movieplayer setContentURL:// set the url of the file you want to play here];

       [playerVC.moviePlayer play];

希望这可以帮助



Answer 4:

由于“完成”按钮不能正常工作了,如果我删除MPMoviePlayerPlaybackDidFinishNotificationNSNotificationCenter ,我改变重复模式MPMovieRepeatModeOne 。 然后,除了视频一切都工作正常,重复。

MPMoviePlayerViewController *playerVC = [[[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:aVideoUrl]] autorelease];
[playerVC.moviePlayer setRepeatMode:MPMovieRepeatModeOne];


文章来源: How to stop MPMoviePlayerViewController's automatic dismiss on moviePlaybackDidFinish?