2012-07-19 22 views
6

再生コントロールが表示または非表示になったときに通知を受け取ることができるかどうかを知りたいだけですか?ムービープレーヤーコントロールが表示/非表示になったときの通知?

例えば、私はスタイルで映像を提示したい:動画の再生開始時に

self.moviePlayerController.controlStyle = MPMovieControlStyleEmbedded; 

は、再生コントロールが表示取得し、自動的に消えます。ユーザーがビデオのタブをタップすると、コントロールが表示されます。

私は通知を必要とするので、私はMPMoviePlayerControllerビューの下にいくつかの追加のボタンの位置を変更する(私の視野を調整することができます。残念ながら、私はマニュアルには何も見つからなかったので は?その可能です。

答えて

5

私は何の文書が存在しないことを恐れていますこれらのイベントの通知

あなたが幸運であると、次の答えのように、すべての投稿の通知を盗聴することによって何かを見つけることができます:。

Trapping and tracing all notifications

How to receive NSNotifications from UIWebView embedded YouTube video playback


は、しかし、単にMPMoviePlayerControler年代のものとあなたのコントロールをリンクする方法があります。その方法は明らかに文書化されておらず、iTunesであなたのアプリを販売しようとすると拒否される危険性が高い。

最初にMPMoviePlayerController内にインターフェイスビューを配置する必要があります。これは今日まで組み込みインターフェイスを使用する場合はMPInlineVideoOverlayというクラスで表されます。もう一度、アップルが別の命名法を使用する日を決めるかもしれないので、彼のこれは大きなチャンスを迎えるか、壊れることに注意してください。適切なビューは、あなただけにあなたがあなたのコントロールが示され、プレイヤーのインタフェースの一部になる、ということでしたら、それはUIView addSubview: を使用してのインタフェースに独自の追加を追加し、右一緒に隠れて戻ると

/** 
* This quirky hack tried to locate the interface view within the supposingly opaque MPMoviePlayerController 
* view hierachy. 
* @note This has a fat chance of breaking and/or getting rejected by Apple 
* 
* @return interface view reference or nil if none was found 
*/ 
- (UIView *)interfaceViewWithPlayer:(MPMoviePlayerController *)player 
{ 
    for (UIView *views in [player.view subviews]) 
    { 
     for (UIView *subViews in [views subviews]) 
     { 
      for (UIView *controlView in [subViews subviews]) 
      { 
       if ([controlView isKindOfClass:NSClassFromString(@"MPInlineVideoOverlay")]) 
       { 
        return controlView; 
       } 
      } 
     } 
    } 
    return nil; 
} 

それと(すべてのアニメーションにも遵守します)。

+1

上記の拒否リスクを説明しているサイドノート:私は主要なアプリリリースでこの厳密なハックを使用していましたが、検出されませんでした.... – Till

関連する問題