2012-07-19 11 views
6

Ich möchte nur wissen, ob es möglich ist, eine Benachrichtigung zu erhalten, wenn das Wiedergabesteuerelement sichtbar oder ausgeblendet wird?Benachrichtigung, wenn die Steuerung des Movie Players sichtbar/versteckt wird?

Zum Beispiel, ich möchte ein Video mit dem Stil präsentieren:

self.moviePlayerController.controlStyle = MPMovieControlStyleEmbedded; 

Wenn das Video abgespielt wird, wird die Wiedergabesteuerung sichtbar und verschwindet automatisch. Wenn der Benutzer nur auf das Video klickt, werden die Steuerelemente angezeigt.

brauche ich eine Benachrichtigung, damit ich meine Ansicht neu einstellen kann (neu positionieren einige zusätzliche Tasten unter dem MPMoviePlayerController Ansicht. Ist das möglich? Weil ich leider nichts in der Dokumentation.

Antwort

5

Ich fürchte, dass es nicht dokumentiert sind Anmeldungen für diese Ereignisse

du Glück und etwas durch schnüffeln alle aufgestellten Benachrichtigungen wie in den folgenden Antworten zu finden sein kann.

Trapping and tracing all notifications

How to receive NSNotifications from UIWebView embedded YouTube video playback


Es gibt jedoch eine Möglichkeit, einfach Ihre Kontrollen mit denen von MPMoviePlayerControler ‚s zu verbinden. Dieser Weg ist definitiv undokumentiert und es besteht ein hohes Risiko, abgelehnt zu werden, wenn Sie versuchen, Ihre App auf iTunes zu verkaufen.

Zuerst müssen Sie die Schnittstellenansicht innerhalb von MPMoviePlayerController finden, was bis heute durch eine Klasse mit der Bezeichnung MPInlineVideoOverlay bei Verwendung der eingebetteten Schnittstelle dargestellt wird. Noch einmal, bitte beachten Sie, dass dies eine große Chance birgt oder bricht, da Apple jeden Tag beschließen könnte, eine andere Bezeichnung zu verwenden.

/** 
* 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; 
} 

Wenn die Rendite eine richtige Ansicht, die Sie gerade auf Ihrem eigenen Ergänzungen der Schnittstelle hinzufügen, um es UIView addSubview: mit Sobald du das getan hast, wird Ihre Kontrollen rechts zusammen einen Teil des Spielers Schnittstelle ein- und ausgeblendet werden damit (auch bei allen Animationen etc.).

+1

Sidenote erklären, dass Ablehnungsrisiko erwähnt: Ich hatte diesen genauen Hack in einer großen App-Release verwendet und es unerkannt durch .... – Till