1

次のコードを使用して、MPMoviePlayerController でビデオ ファイルを再生しています。

  NSString* filePath = [[NSBundle mainBundle] pathForResource:@"one" ofType:@"mp4"];
    NSURL*  url = [NSURL fileURLWithPath:filePath];

    _movie = [[MPMoviePlayerController alloc] initWithContentURL:url];
    [_movie.view setFrame:self.view.bounds];
    [self.view addSubview:_movie.view];
    _movie.fullscreen=YES;
    _movie.controlStyle=MPMovieControlStyleFullscreen;
    [_movie prepareToPlay];
    [_movie play];

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(close:)name:MPMoviePlayerPlaybackDidFinishNotification object:_movie];

- (void) close:(NSNotification *)notification {

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

    if(reason == MPMoviePlaybackStateStopped) {

        NSLog(@"Stop");

    }
    else if (reason == MPMovieFinishReasonPlaybackEnded) {
        NSLog(@"Playback Ended ");
    }
    else if (reason == MPMovieFinishReasonUserExited) {

        NSLog(@"Exited");
        [_movie.view removeFromSuperview];
    }
    else if (reason == MPMovieFinishReasonPlaybackError) {
        //error
        NSLog(@"Error");
    }    
}

Notification を取得できますが、Movieplayer はスーパービューから削除されません。

何が問題なのですか??

4

1 に答える 1

0

この次の指示を試してください:

MPMoviePlayerWillExitFullscreenNotification を聞くとき。

[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(doneButtonClick:) 
                                             name:MPMoviePlayerWillExitFullscreenNotification 
                                           object:_movie];

そしてセレクターメソッド:

-(void)doneButtonClick:(NSNotification*)aNotification{
  [_movie.view removeFromSuperview];
}

(また)

以下のチュートリアルで mpmovieplayerviewcontroller を使用するより良い方法

http://mobiledevelopertips.com/video/getting-mpmovieplayercontroller-to-cooperate-with-ios4-3-2-ipad-and-earlier-versions-of-iphone-sdk.html

于 2012-07-06T09:38:36.050 に答える