2012-03-20 8 views
8

非常に単純なビデオプレーヤーを設定しようとしています。 (iOS 5.1、Xcode 4.3.1)4秒後にMPMoviePlayerControllerが停止する

呼び出すと正常に動作しますが、4秒間しか再生されないと黒い画面が表示されます。再生中に画面をタップすると、シーケンス全体が再生されます。 4秒間画面をタップすると、黒い画面が表示されます。

何が欠けていますか?

クルト


編集されたバージョンは、罰金果たしています。インターフェイスファイルで

:.mファイルで

@property (nonatomic,strong) MPMoviePlayerController *myMovieController; 

-(void)playMedia { 
NSString *movieFile = [[NSBundle mainBundle] pathForResource:@"Movie" ofType:@"m4v"]; 
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:movieFile]]; 

[moviePlayer prepareToPlay]; 
moviePlayer.view.frame = self.view.bounds; 
moviePlayer.scalingMode = MPMovieScalingModeAspectFit; 
moviePlayer.movieSourceType = MPMovieSourceTypeFile; 
moviePlayer.fullscreen = YES; 
moviePlayer.controlStyle = MPMovieControlStyleFullscreen; 

self.myMovieController = moviePlayer; 
[self.view addSubview: self.myMovieController.view]; 

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(playMediaFinished:) 
              name:MPMoviePlayerPlaybackDidFinishNotification 
              object:moviePlayer]; 
[self.myMovieController play]; 
} 

答えて

19

あなたはARCを使用している場合、私はあなたが外側のMoviePlayerを保持する必要があると考えています。私はちょうどそれを自分自身の新しい財産に割り当てました。 HTH

+0

私はARCを使用していますが、私の無知を許しています。 [moviePlayer retain]を呼び出すと、「ARCは「retain」の明示的メッセージ送信を禁止しています」というエラーメッセージが表示されます。早速のお返事ありがとうございます。 – Kurt

+0

入手しました。あなたが言ったように、あなたは財産を割り当てました。私は投稿を編集します。 – Kurt

+0

良いこと、うまくいきました。あなたが明示的に保持を呼び出すことはできないと言っているが、プロパティは仕事をしていると言っているように、ARCで保持を行うために別のより洗練された方法があるなら、Dunno。 – davidfrancis

4

解決策は、プレーヤがビューコントローラのインスタンス変数またはプロパティでなければならないということです。 つまり、MPMoviePlayerControllerのインスタンスを使用する必要があります。

@property(非構造、強力)MPMoviePlayerController * myMovieController;

+0

私のために働いた!ありがとう。後ろ向きに考えてみると、それは感覚を作ります。いずれにせよ感謝 – YuviGr

+0

ありがとう@YuviGr – Vicky

関連する問題