2010-08-18 14 views
6

Ho questo strano problema in iOS4 in cui nel video che sta riproducendo in MPMoviePlayerController neri quando l'utente esegue determinati tipi di gesti sullo schermo. Sto semplicemente creando un UIViewController e oggetto per MPMoviePlayerController e quindi impostando la vista sullo UIViewController.Blackout dello schermo quando si esegue il gesto di pizzicare su MPMoviePlayerController

Voglio chiedere se questo problema è risolvibile o meno, e qual è il modo corretto di riprodurre un video in streaming su iPhone.

E se c'è modo che posso utilizzare una visualizzazione overlay sopra MPMoviePlayerController e catturare tutti gesti e trasmettere rubinetti singoli o tocchi per MPMoviePlayerController per funzionalità generale MPMoviePlayerController ed evitando gesti che causa il problema.

Per favore aiutatemi a risolvere il problema con la Migliore soluzione possibile e per favore aiutatemi ad elaborare la soluzione.

+0

Ho visto anche questo. Ho notato che è legato agli eventi inviati .. il gesto di pizzicare è, come il passaggio da incorporato a modalità a schermo intero, probabilmente inviando l'evento di fine partita. Non sono stato in grado di capire perché. –

risposta

0

Odio questo problema. Quello che sono stato in grado di trovare è che la modalità a schermo intero deve avere il controllo incorporato in modo che NSNotificationCenter risponda con il Notification corretto. Sembra stupido e ridicolo, ma questo è quello che ho trovato in 4.0.

9

Apple incorporato UIPinchGestureRecognizer in MPMoviePlayerViewController, ma non può essere trovato nella proprietà UIResponder.gestures. È possibile disabilitare UIPinchGestureRecognizer incorporato nel metodo touchesBegan di MPMoviePlayerViewController.

 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    for (UITouch *touch in touches) { 
     NSArray *array = touch.gestureRecognizers; 
     for (UIGestureRecognizer *gesture in array) { 
      if (gesture.enabled && [gesture isMemberOfClass:[UIPinchGestureRecognizer class]]) { 
       gesture.enabled = NO; 
      } 
     } 
    } 
} 
 
0

Ho visto questo problema e ho trovato una soluzione semplice.

Non è stato possibile utilizzare il trucco al tocco di cui sopra poiché non si desidera utilizzare MPMoviePlayerViewController (abbiamo alcuni controlli personalizzati quando il video non è a schermo intero e si desidera mantenere la transizione fluida).

sintomi (iOS 5.1):

  • Quando l'utente più volte ha aperto un video a schermo intero, pizzicato di nuovo fuori di schermo intero e poi fece lo stesso con un nuovo video lo schermo potrebbe diventare nero il 5 ° tempo in cui un video è stato avviato e inserito a schermo intero.
  • Mentre lo schermo è oscurato, è possibile nascondere e mostrare la barra di stato toccando, ma non appare alcun video o barra di navigazione.
  • Utilizzando il pulsante "Fine" a schermo intero invece di pizzicare era possibile chiudere a schermo intero senza problemi mai.
  • Assegniamo un nuovo MPMoviePlayerController per ogni video e non perdiamo nulla. Questo non ha aiutato.

Soluzione:

Quando respinge la vista che aveva la vista MPMoviePlayerController in esso abbiamo impostato contentURL = nil sul lettore.

Successivamente, non abbiamo problemi con lo schermo nero nelle successive istanze MPMoviePlayerController.

Sembra che ci sia una pulizia interna che viene eseguita quando si utilizza il pulsante "Fatto", ma non quando si pizzica per chiudere a schermo intero.

2

ho avuto un problema simile e ho appena trovato la causa del mio problema dal documento di Apple:

Quando si aggiunge punto di vista di un lettore di film alla gerarchia vista della tua app, assicurati di dimensioni del telaio in modo corretto, come illustrato di seguito:

...

[player.view SETFRAME: myView.bounds]; telaio // giocatore deve corrispondere con i genitori

...

Ora i miei pizzichi non si infrangono la mia app.

Problemi correlati