Ios6 在fullsceen模式下输入时,为什么MPMoviePlayerController调用MPMoviePlayerPlaybackDidFinishNotification

Ios6 在fullsceen模式下输入时,为什么MPMoviePlayerController调用MPMoviePlayerPlaybackDidFinishNotification,ios6,mpmovieplayercontroller,xcode4.5,Ios6,Mpmovieplayercontroller,Xcode4.5,我想在全屏模式下显示一个MPMoviePlayerWirewController,但是当按下movieplayercontroller视图的全屏按钮时,首先调用MPMoviePlayerWireleterFullScreenNotification,如expacted所示,但是,MPMoviePlayerPlaybackDidFinishNotification也在发送。作为一个原因,它说MPMovieFinishRasonlayBackend,我不知道我做错了什么。(此外,我使用iOS 6.0

我想在全屏模式下显示一个MPMoviePlayerWirewController,但是当按下movieplayercontroller视图的全屏按钮时,首先调用MPMoviePlayerWireleterFullScreenNotification,如expacted所示,但是,MPMoviePlayerPlaybackDidFinishNotification也在发送。作为一个原因,它说MPMovieFinishRasonlayBackend,我不知道我做错了什么。(此外,我使用iOS 6.0和XCode 4.5.1)

我的解释是,只有mpmovieplayerwillenterfullscreen通知被调用

下面是对代码的简短解释: MovieplayerViewController的视图显示在“我的内容”视图中的一个子视图中。当点击全屏按钮时,它首先显示为全屏,但同时调用退出按钮并停止播放(没有崩溃,没有其他)

就这样

当按下resize(或fullscreen)按钮时,也会调用MoviePlayerIDFinishNotification:方法

- (void)moviePlayerDidFinishNotification:(NSNotification*) aNotification {

    int reason = [[[aNotification userInfo] valueForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] intValue];

    if (reason == MPMovieFinishReasonPlaybackEnded) {

        //movie finished playin

//in debug mode, it stops right at the NSLog

        NSLog(@"");
    }

    else if (reason == MPMovieFinishReasonUserExited) {

        //user hit the done button

    }

    else if (reason == MPMovieFinishReasonPlaybackError) {

        //error

    }

.. }

自从iOS 6.0以来,我是否做错了什么,或者可能有什么变化?

好的,似乎是MPMoviePlayerViewController中存在一些问题。帮助我们的是仅使用MPMoviePlayerController。

为了将来参考,您的播放器显示在小窗口中的原因是因为您设置了:

 [playerViewController.moviePlayer setControlStyle:MPMovieControlStyleEmbedded];

   [playerViewController.moviePlayer setScalingMode:MPMovieScalingModeFill];

   CGRect rect = videoView.frame;

   rect.origin = CGPointZero;

   [playerViewController.view setFrame:rect];

   [playerViewController.moviePlayer prepareToPlay];


        //movie this is my contents subview, where i add the viewcontroller's view as a subbview
    [self.videoView addSubview:playerViewController.view];

    [self.videoView setHidden:NO];

当您使用MPMoviePlayerViewController时,它会创建自己的视图控制器。这些调用是不必要的,只会产生奇怪的行为。这就是为什么MPMoviePlayerController工作正常的原因,因为它被设计为在另一个视图控制器中工作。

我遇到了与您描述的相同的问题。我使用的是ios 6.1和xcode 4.6。我认为这是一个MPMoviePlayerServiceController错误。
 [playerViewController.moviePlayer setControlStyle:MPMovieControlStyleEmbedded];

   [playerViewController.moviePlayer setScalingMode:MPMovieScalingModeFill];

   CGRect rect = videoView.frame;

   rect.origin = CGPointZero;

   [playerViewController.view setFrame:rect];

   [playerViewController.moviePlayer prepareToPlay];


        //movie this is my contents subview, where i add the viewcontroller's view as a subbview
    [self.videoView addSubview:playerViewController.view];

    [self.videoView setHidden:NO];