2011-12-01 26 views
5

私はMPMoviePlayerViewControllerに問題があります。アプリがバックグラウンドに入り、再度起動するか、別のビューコントローラーに移動するとムービーが黒くなってしまいます。MPMoviePlayerViewControllerが背景になると黒くなります

EIDTED CODE:

-(void)viewDidLoad { 
     [self moviePlayer2]; 
    } 

    - (void) moviePlayer2 { 



    NSString *path = [[NSBundle mainBundle] pathForResource:@"cloud" ofType:@"mp4"]; 
    player = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:path]]; 
    player.view.userInteractionEnabled = YES;  
    player.moviePlayer.repeatMode = YES; 
    player.moviePlayer.scalingMode = MPMovieScalingModeFill; 
    player.moviePlayer.controlStyle = MPMovieControlStyleNone; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(moviePlayBackStateChange:) 
               name:MPMoviePlayerPlaybackStateDidChangeNotification 
               object:[player moviePlayer]]; 

    [[player moviePlayer] play]; 

    [self.view addSubview:player.view]; 

} 


-(void) moviePlayBackStateChange: (NSNotification *) note { 

    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackStateDidChangeNotification object:[player moviePlayer]]; 

    [[player moviePlayer] play]; 

    //[player release]; 
    NSLog(@"FINISHED"); 
} 

はあなたに感謝、私は私のメニューのバックグラウンドで再生されるムービーを持って、ここに私のコードです。これに

[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:[player moviePlayer]]; 
[player release]; 

+0

あなたのアプリがバックグラウンドに入ると 'movieFinishedPlaying'が呼び出されますか?あなたがわからない場合は、ブレークポイントを設定して(またはコンソールにNSLogを使用して)見つけてください。 –

+0

私はviewControllers間を切り替えるとはい。コンパイラがNSLogメッセージを表示する –

答えて

3

を、私はあなたが以下のコードを追加する必要があるかもしれないと思う:

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(moviePlayBackStateChange:) 
               name:MPMoviePlayerPlaybackStateDidChangeNotification 
               object:[player moviePlayer]]; 

とm moviePlayBackStateChangeメソッドのovie状態を返します。 ムービーの再生中にムービーが一時停止し、アプリがバックグラウンドで入力されるため、アプリがバックグラウンドから復帰したときにムービーを次のように再開させる必要があります。そうでない場合、ムービーは一時停止状態を維持する。だからこそあなたのアプリは黒くなります。

[[player moviePlayer] play]; 

ムービーは引き続き再生されます。これは男あなたを助けることができる

-(void) pauseMovieInBackGround 
{ 
    [player moviePlayer] pause]; 
    [player.view removeFromSuperview]; 
} 
-(void) resumeMovieInFrontGround 
{ 
    [self.view addSubview:player.view]; 
    [[player moviePlayer] play]; 
} 

希望:アプリがバックグラウンドから背景と背中に来るとき、あなたがinvoteすべき2つのメソッドを追加すること 。

+0

このコードをどこに置くべきですか? '[[player moviePlayer] play];'私の編集したコードを見てください...同じ問題があるので...ビューを切り替えた後、私の映画は黒くなりました! –

+0

ビューはpresentmodalviewコントローラで変更され、他のビューからは捨てます –

+0

私のコードを再検討してください。私は本当にこの答えが必要です –

1

これを変更してみてください

[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:[player moviePlayer]]; 
[movieController.view removeFromSuperview]; 
[player release]; 

それが動作するかどうかを参照してください:D

+0

removeFromSuperviewのために白い画面が表示されるようになりました! –

+0

提案がありますか? –

+0

削除したビューを他のビューに置き換えていますか?もしそうでなければ、それはそれを説明するでしょう。 "[viewController addSubview:newView];を必ず使用してください。 viewControllerとnewViewを自分のビューに置き換えてください –

関連する問題