2012-07-19 18 views
6

Sadece oynatma kontrolü görünür veya gizlendiğinde bildirim almanın mümkün olup olmadığını bilmek istiyorum.Film oynatıcısı kontrolü görünce/gizlendiğinde bildirim yapılıyor mu?

Örneğin, I tarzı ile bir video sunmak istiyorum: Videonun oynatılması başladığında

self.moviePlayerController.controlStyle = MPMovieControlStyleEmbedded; 

, oynatım kontrolleri görünür olur ve otomatik olarak kaybolur. Kullanıcı sadece videoda sekme yaparsa, kontroller görünür. i (benim görünümünü ayarlamak MPMoviePlayerController görünümü altında bazı ek düğmeler yeniden konumlandırmak böylece

Bir bildirim lazım. ne yazık ki belgelerinde hiçbir şey bulamamıştı ? mümkün mü.

cevap

5

hiçbir belgelenmiş olduğunu korkuyorum bu olaylar için bildirimleri

şanslı ve aşağıdaki cevapları gibi tüm yayınlanmıştır bildirimleri koklama yoluyla bir şeyler bulabilirler

.

Trapping and tracing all notifications

How to receive NSNotifications from UIWebView embedded YouTube video playback


ancak basitçe MPMoviePlayerControler 's olanlar ile kontrollerini bağlamak için bir yol yoktur. Bu şekilde kesinlikle belgelenmemiş ve uygulamanızı iTunes'ta satmaya çalışırken reddedilme riski çok yüksektir. İlk olarak, gömülü arabirimi kullanırken MPInlineVideoOverlay adlı bir sınıf tarafından temsil edilen, MPMoviePlayerController numaralı arabirim görünümündeki arabirim görünümünü bulmanız gerekir. Bir kez daha, Apple'ın herhangi bir günü farklı bir isimlendirme kullanmaya karar verebileceğinden, bunun büyük bir şans veya kırılma taşıdığını lütfen unutmayın. Uygun bir görünüm, sadece için size kontroller gösterilen oyuncunun arayüzü parçası olacak, bunu yaptı kez UIView addSubview: kullanmanın üzerinde arayüzüne kendi eklemeler ekleyebilir ve sağ aynı gizli dönerse

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

onunla (ayrıca tüm animasyonlara bağlı kalarak).

+1

Bahsedilen reddedilme riskini açıklayan Sidenote: Büyük bir uygulama sürümünde bu kesmeyi kullanmıştım ve fark edilmeden geçti. – Till