2012-11-14 13 views
5

ho un'applicazione che ha la seguente configurazione:controlli di riproduzione blocco schermo MPMoviePlayerViewController non lavorativi

URMoviePlayerViewController estende MPMoviePlayerViewController

  • ha il metodo remoteControlReceivedWithEvent: (UIEvent *) evento implementato, nonché come:

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

URPlayerViewController ha l'URMoviePlayerViewController come una proprietà

@property (nonatomic, strong) URMoviePlayerViewController *player; 
  • giocatore viene inizializzato quando una chiamata a riprodurre un clip audio è fatto; se è già inizializzato, non ri-inizializzare il lettore

  • URPlayerViewController ha una vista che è un giocatore personalizzato con play/pausa, prossimi controlli/precedenti che viene inizializzato e aggiunti alla visualizzazione secondaria nel metodo viewDidLoad

URAppDelegate ha URPlayerViewController come una proprietà

@property (nonatomic, strong) URPlayerViewController *playerViewController; 
  • playerViewController viene inizializzato in didFinishLaunchingWithOptions applicazione

  • vista di playerViewController viene aggiunto alla finestra - in modo che il player personalizzato è visibile in tutta l'applicazione

Problema:

Tutto solito funziona bene. Ogni tanto sulla schermata di blocco i comandi di riproduzione (play/pause/next/previous) smettono di funzionare. remoteControlReceivedWithEvent non viene mai chiamato. Non sono stato in grado di riprodurlo in modo coerente.

Qualsiasi consiglio o idea sul debug di questo problema relativo alla riproduzione sarebbe ottimo in quanto non sono in grado di riprodurre in modo coerente questo problema. Grazie!

risposta

1

penso che vi manca sotto i metodi, basta inserirlo nel codice esistente e accettare la risposta se funzionerà:

Rimuovere beginReceivingRemoteControlEvents da viewDidLoad e metterlo 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

avevo provato questo cambiamento earli er (comunque ho usato viewDidDisappear invece di viewWillDisappear). Ancora senza fortuna. Vedo ancora che i controlli di riproduzione smettono di funzionare una volta ogni tanto. –

Problemi correlati