2012-11-14 7 views
5

Arbeits Ich habe eine Anwendung, die die folgende Konfiguration hat:MPMoviePlayerViewController Sperre Bildschirm Wiedergabesteuerung nicht

URMoviePlayerViewController MPMoviePlayerViewController erstreckt

  • hat die Methode remoteControlReceivedWithEvent: (UIEvent *) Ereignis umgesetzt, als auch wie:

    (void)viewDidLoad 
    { 
        [super viewDidLoad];  
        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
        [self becomeFirstResponder]; 
    } 
    
    (BOOL) canBecomeFirstResponder 
    { 
        return YES; 
    } 
    

URPlayerViewController hat die URMoviePlayerViewController als Eigenschaft

@property (nonatomic, strong) URMoviePlayerViewController *player; 
  • Spieler initialisiert wird, wenn ein Anruf einen Clip von Audio spielen wird; wenn sie bereits initialisiert wird, ist es nicht neu initialisieren Spieler

  • URPlayerViewController hat eine Ansicht, die ein benutzerdefinierter Spieler mit Play/Pause, nächsten/vorherigen Kontrollen, die initialisiert wird und zu der Subview in der viewDidLoad Methode

URAppDelegate hat URPlayerViewController als Eigenschaft

@property (nonatomic, strong) URPlayerViewController *playerViewController; 
  • playerViewController werden in Anwendung didFinishLaunchingWithOptions initialisiert

  • playerViewController Sicht auf das Fenster hinzugefügt werden - so dass die benutzerdefinierten Spieler in der gesamten App

Problem sichtbar ist:

Alles funktioniert in der Regel Gut. Ab und zu auf dem Sperrbildschirm hören die Wiedergabesteuerungen (Play/Pause/Next/Previous) auf zu arbeiten. remoteControlReceivedWithEvent wird nie aufgerufen. Ich konnte dies nicht konsequent reproduzieren.

Alle Ratschläge oder Ideen zum Debuggen dieses Problems rund um die Wiedergabe wäre großartig, da ich dieses Problem nicht konsistent reproduzieren kann. Vielen Dank!

Antwort

1

Ich glaube, Sie unten Methoden fehlen, fügen Sie ihn einfach in Ihren bestehenden Code und akzeptieren Sie die Antwort, wenn es funktioniert:

entfernen beginReceivingRemoteControlEvents von viewDidLoad und steckte es in ViewDidAppear:

- (void)viewDidAppear:(BOOL)animated { 
[super viewDidAppear:animated]; 
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
[self becomeFirstResponder]; 

}

- (void)viewWillDisappear:(BOOL)animated { 
[super viewWillDisappear:animated]; 
[[UIApplication sharedApplication] endReceivingRemoteControlEvents]; 
[self resignFirstResponder]; 

}

+0

ich diese Änderung EARLI versucht hatte, (Ich habe jedoch viewDidDisappear anstelle von viewWillDisappear verwendet). Immer noch kein Glück. Ich sehe immer noch, dass die Wiedergabesteuerelemente nicht mehr funktionieren. –