2009-07-15 14 views
10

MPMoviePlayerControllerを使用する場合、再生ボタンは「次へ」と「前の」ボタンで囲まれています。iPhoneの次/前のボタンMPMoviePlayerController

クリックしたときに通知を受け取るにはどうすればよいですか? コンテンツのリスト(配列)をMPMoviePlayerControllerに送る方法はありますか?

+0

私は私の質問と回答を参照してください、方法を見つけました。 http://stackoverflow.com/questions/3593683/how-can-i-know-users-click-fast-forward-and-fast-rewind-buttons-on-the-playback-c/3598383#3598383 – alones

答えて

6

ボタン通知が必要な場合、Nathanはプレーヤのために独自のUIを実装する必要がある点については正しいです。あなたは再生状態についてのプレーヤーからの通知を得ることができます。

自己MPMusicPlayerControllerのインスタンスを含むコントローラまたはモデルであるAddMusic例から:

- (void) registerForMediaPlayerNotifications { 

    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; 

    [notificationCenter addObserver: self 
          selector: @selector (handle_NowPlayingItemChanged:) 
           name: MPMusicPlayerControllerNowPlayingItemDidChangeNotification 
          object: musicPlayer]; 

    [notificationCenter addObserver: self 
          selector: @selector (handle_PlaybackStateChanged:) 
           name: MPMusicPlayerControllerPlaybackStateDidChangeNotification 
          object: musicPlayer]; 

    /* 
    // This sample doesn't use libray change notifications; this code is here to show how 
    //  it's done if you need it. 
    [notificationCenter addObserver: self 
    selector: @selector (handle_iPodLibraryChanged:) 
    name: MPMediaLibraryDidChangeNotification 
    object: musicPlayer]; 

    [[MPMediaLibrary defaultMediaLibrary] beginGeneratingLibraryChangeNotifications]; 
    */ 

    [musicPlayer beginGeneratingPlaybackNotifications]; 
}
0

私はあなたがMPMoviePlayerControllerを支配しているとは思いません。これは基本的に映画の再生を開始したり停止したりすることのできる標準的なコンポーネントです。

+0

あなたが正しいです。そして、なぜ、これらのコントロールがとにかくあるのですか? youTubeアプリケーションでは、次の/前のビデオに移動します。 –

+0

iPhone上では、現在のムービーの最初または最後に移動します。それらは次/前ボタンではありません。 –

+0

これは間違っています。あなたがam MPMoviePlayerControllerを実装するとき、彼らは単に "停止"と同じ方法でプレーヤを終了します。 –

4

ユーザーが次/前のボタンを押すと通知が生成されません(そのバグを報告する必要があります)。したがって、承認されていないビュークロールなしでこれを解決する唯一の方法は、独自のビデオオーバーレイ表示を実装することです。

MPMoviePlayerController* moviePlayer = [[MPMoviePlayerController alloc] 
    initWithContentURL:someUrl]; 
moviePlayer.movieControlMode = MPMovieControlModeHidden; 
[moviePlayer play]; 

NSArray* windows = [[UIApplication sharedApplication] windows]; 
if ([windows count] > 1) { 
    UIWindow *moviePlayerWindow = [[UIApplication sharedApplication] keyWindow]; 
    [moviePlayerWindow addSubview:yourCustomOverlayView]; 
} 

理想的ではありませんが、標準コントロールは再実装が簡単です。

+0

このコードは、既存のオーバーレイレイヤーを削除していません。それらに明確なボタンを追加するつもりでしたか? –

+0

@ yn2:私は自分の答えを更新して、デフォルトのオーバーレイUIが隠されるようにしました。 –

関連する問題