iPad SDK: Ein eingebetteter YouTube-Film spielt die Vollbildversion hinter UIWebView

7

Ich habe ein UIWebview in einem UIScrollView. In der Webansicht habe ich einen eingebetteten YouTube-Film. Wenn ich den YouTube-Film spiele, funktioniert alles einwandfrei. Wenn ich jedoch die Vollbild-Taste drücke, wird der Film hinter dem Webview abgespielt. Das WebView in den Vordergrund zu bringen, funktioniert nicht, weil ich die Scroll-Funktionen des ScrollViews horizontal scrollen lassen möchte.

    
user517153 23.11.2010, 08:26
quelle

3 Antworten

12

Grundsätzlich möchten Sie erkennen können, wann ein Film im Vollbildmodus abgespielt wird, und Ihre Ansichten entsprechend anordnen. Dann, wenn die Vollbild-Wiedergabe beendet ist, möchten Sie Ihre Ansichten zurück zu bekommen, wie sie sind.

Das Problem ist, dass es keine dokumentierte Möglichkeit gibt, sich einzuklinken oder zu erkennen, wenn ein UIWebView die Videowiedergabe im Vollbildmodus auslöst.

Ich habe "dokumentierten Weg" genannt, da es einige Benachrichtigungen gibt, mit denen Sie erkennen können, wann ein UIWebView die Vollbildwiedergabe auslöst. Sie können nur auf sie hören und Ihre Ansichten entsprechend neu anordnen. Ich empfehle dies jedoch nicht unbedingt, da sie undokumentiert sind und sich ändern können (tatsächlich haben sie einen Schreibfehler bis iOS 4.3, siehe Antworten unten).

%Vor%

Das herauszufinden war ein bisschen mühsam - es gibt tatsächlich mehrere Benachrichtigungen, die ausgelöst werden, wenn ein YouTube-Video in einem UIWebView wiedergegeben wird. Um sie herauszufinden, müssen Sie bei allen Benachrichtigungen einen Haltepunkt löschen und dann manuell die Speicherorte dieser Benachrichtigungen überprüfen, um ihre String-Namen herauszufinden. Ich glaube nicht, dass irgendjemand diese zuvor herausgezogen hat, denn wenn ich sie google, bekomme ich nichts. Aber sie funktionieren, versprochen!

Ich hoffe, dass ich in der Lage bin, benachrichtigt zu werden, wenn die Vollbildwiedergabe gestartet / beendet wird, mit der massiven Einschränkung, dass Apple dieses undokumentierte Verhalten jederzeit ändern könnte. Ihre App wird nicht sofort abgelehnt, um sie zu verwenden (weil Sie keine undokumentierten Methoden aufrufen), und ich habe sie in Versandanwendungen verwendet. Aber es ist immer noch nicht die beste Idee in der Welt ... vielleicht die einzige Option, die Sie haben.

Bearbeiten: Zur Verdeutlichung, basierend auf dem folgenden Kommentar: Sie sind keine Konstanten. Sie müssten sie also in Anführungszeichen setzen, wenn Sie für Benachrichtigungen registriert wären.

    
lxt 01.02.2011 14:36
quelle
6

Für iOS 4.3+ hat Apple die Namen dieser Benachrichtigungen geändert: UIMoviePlayerControllerDidEnterFullcreenNotification ist jetzt UIMoviePlayerControllerDidEnterFullscreenNotification

UIMoviePlayerControllerDidExitFullcreenNotification ist jetzt UIMoviePlayerControllerDidExitFullscreenNotification

Bitte beachten Sie: Der Begriff "Vollbild" hat sich in "Vollbild" geändert.

Danke!

    
Bernardo Assis 10.10.2011 19:30
quelle
2

Ich wollte nur bestätigen, dass das funktioniert, nachdem ich eine Weile damit herumgespielt habe. Sie können direkten Zugriff auf die Ansicht erhalten, in der das Video abgespielt wird. Dies ist eine Blockierungsmethode, mit der Sie sich für die Benachrichtigung registrieren und die relevanten Ansichten herausziehen können.

Hinweis: Sie müssen das Hinzufügen von Unteransichten verzögern und / oder auf interne Unteransichten von Apple zugreifen, um die Navigationsleiste für weitere Anpassungen zu entfernen.

%Vor%     
user800561 16.06.2011 16:58
quelle