2010-08-18 12 views
6

Ich habe dieses seltsame Problem in iOS4, wo in dem Video, das in MPMoviePlayerController spielt, schwarz aus, wenn der Benutzer bestimmte Art von Gesten über den Bildschirm ausführt. Ich erstelle einfach eine UIViewController und ein Objekt für MPMoviePlayerController und setze dann die Ansicht auf die UIViewController.Bildschirm-Blackout beim Ausführen von Pinch Geste auf MPMoviePlayerController

Ich möchte fragen, ob dieses Problem lösbar ist oder nicht, und was ist die richtige Art, ein Streaming-Video auf dem iPhone zu spielen.

Und wenn es so, dass ich alle Gesten eine Überlagerungsansicht über MPMoviePlayerController und erfassen und auf einzelnen Taps oder Berührungen MPMoviePlayerController für die allgemeine Funktionalität von MPMoviePlayerController und der Vermeidung von Gestures, das das Problem passieren kann verursacht.

Bitte helfen Sie mir, das Problem mit der bestmöglichen Lösung zu lösen und bitte helfen Sie mir bei der Ausarbeitung der Lösung.

+0

Ich habe das auch gesehen. Ich habe bemerkt, dass es mit den gesendeten Ereignissen zusammenhängt. Die Pinch-Geste ist, wie der Wechsel vom eingebetteten zum Vollbild-Modus, wahrscheinlich das Did-Ende-Spiel-Ereignis. Ich konnte nicht herausfinden warum. –

Antwort

0

Ich hasse dieses Problem. Was ich gefunden habe, ist, dass der Vollbildmodus eine eingebettete Steuerung haben muss, damit der NSNotificationCenter mit dem korrekten Notification antwortet. Klingt dumm und lächerlich, aber das ist, was ich in 4.0 gefunden habe.

9

Apple eingebettet UIPinchGestureRecognizer in MPMoviePlayerViewController, aber es kann nicht in UIResponder.gestures Eigentum gefunden werden. Sie können UIPinchGestureRecognizer, eingebettet in touchesBegan Methode von MPMoviePlayerViewController deaktivieren.

 

- (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

Ich habe dieses Problem erkannt und eine einfache Problemumgehung gefunden.

Der obige Geste-Nuking-Trick konnte nicht verwendet werden, da wir nicht MPMoviePlayerViewController verwenden möchten (wir haben einige benutzerdefinierte Steuerelemente, wenn das Video nicht im Vollbildmodus ist und den fließenden Übergang beibehalten möchte).

Symptome (iOS 5.1):

  • Wenn der Benutzer wiederholt ein Video im Vollbildmodus geöffnet, kniff sie aus Vollbild zurück und tat dann das gleiche mit einem neuen Video würde der Bildschirm die fünfte schwarz gehen Zeit, zu der ein Video gestartet wurde und im Vollbildmodus war.
  • Während der Bildschirm ausgeblendet ist, ist es möglich, die Statusleiste durch einfaches Antippen auszublenden und anzuzeigen, aber keine Video- oder Navigationsleiste erscheint.
  • Mit der Schaltfläche "Fertig" im Vollbildmodus anstelle von Pinch war es möglich, Vollbild ohne Probleme zu schließen.
  • Wir vergeben eine frische MPMoviePlayerController für jedes Video und leckt nichts. Das hat nicht geholfen.

Umgehung:

Wenn die Ansicht zurückgewiesen, die in den MPMoviePlayerController Blick hatten wir contentURL = nil auf den Spieler gesetzt.

Danach haben wir keine Probleme mit schwarzem Bildschirm auf nachfolgenden MPMoviePlayerController Instanzen.

Es scheint, dass es eine interne Bereinigung gibt, die ausgeführt wird, wenn Sie die Schaltfläche "Fertig" verwenden, aber nicht, wenn Sie den Vollbildmodus schließen.

2

Ich hatte ein ähnliches Problem, und ich habe gerade den Grund meines Problems aus dem doc Apple:

Wenn Sie einen Film Spieler Blick auf Ihren App Ansicht Hierarchie hinzufügen, müssen Sie den Rahmen korrekt zu Größe, wie hier gezeigt:

...

[player.view SetFrame: myView.bounds]; // Spielers Rahmen muss

Eltern passen ...

Jetzt sind meine kneift nicht meine Anwendung abstürzt.

Verwandte Themen