7
votes

iPad SDK: Movie YouTube intégré Place la version FullScreen derrière UiWebView

J'ai une uiWebView dans un Uiscrollview. Dans la WEBVIEW, j'ai un film YouTube intégré. Lorsque je joue au film YouTube, tout fonctionne bien, cependant, lorsque j'appuie sur le bouton FullScreen, le film commence à jouer derrière la vision Web. L'apport sur le WebView à l'avant ne fonctionne pas, car je souhaite les capacités de défilement de la vision de ScrollView pour faire défilement horizontal.


2 commentaires

Pourquoi avez-vous un webview à l'intérieur d'une vision de défilement? Un UIWebView implémente son propre comportement de défilement. De plus, en fonction de la façon dont vous faites filer les délégués, vous pouvez obtenir un comportement bizarre WRT le UiscrollViewelegate que UIWebView et UiscrollView implémentent. Donc, si vous dites à la fois la vision de ScrollView et la View WebView que sa propriété déléguée doit pointer sur vous-même (votre contrôleur), alors chaque fois que le webview défile, il s'agira de méthodes de déclenchement tels que ScrollViefDidscroll: qui sera le même Méthode qui est tirée lorsque votre visionnage de défilement fait défiler et non la View. Cela me semble méchante.


Ce que je veux réaliser, c'est que je peux faire défiler des webviews horizontales différents (où chaque webview est une page de magazine). Le comportement de défilement des Views est désactivé. Alors, y a-t-il un moyen de faire cela mieux ou pouvez-vous me dire comment je peux obtenir le film YouTube au premier plan?


3 Réponses :


12
votes

Fondamentalement, vous voulez pouvoir détecter quand un film commence à jouer plein écran et organiser votre point de vue de manière appropriée. Ensuite, lorsque la lecture en plein écran se termine que vous souhaitez pouvoir remettre votre point de vue sur la manière dont ils sont.

Le problème est qu'il n'ya pas de manière documentée de se connecter ou de détecter lorsqu'un UIWebView déclenche la lecture vidéo en plein écran. P >

J'ai dit «de manière documentée», car certaines notifications vous permettent de détecter lorsqu'un UIWebView déclenche une lecture en plein écran. Vous pouvez simplement écouter pour eux et réorganiser vos points de vue en conséquence. Cependant, je ne le recommande pas nécessairement cela, car ils sont sans papiers et sujets à changement (en fait, ils ont une erreur d'orthographe en eux jusqu'à IOS 4.3, voir réponses ci-dessous). P>

// For iOS 4.3 and above:
UIMoviePlayerControllerDidEnterFullscreenNotification
UIMoviePlayerControllerDidExitFullscreenNotification   

// For iOS 4.2 and below:
UIMoviePlayerControllerDidEnterFullcreenNotification
UIMoviePlayerControllerDidExitFullcreenNotification   // (note spelling mistake)


3 commentaires

Que dois-je avoir à #Importer pour les faire fonctionner? J'utilise Xcode 4 et j'obtiens une erreur de construction (utilisation d'identifiant non déclaré)


Vous devez les mettre dans des guillemets, ce n'est pas des constantes, comme suit: Addobserver: Sélecteur auto-sélecteur: @Selector (someselector) Nom: @ "UIMOVIEPLAYPONTROLLERDIDELLCREENDENTIFICATIONS" objet: nil] - espère que cela aide!


Bernardo a fait de bonnes captures - dans 4.3 Les noms de notification ont changé et ne sont pas orthographiés correctement.



2
votes

Je voulais juste confirmer que cela fonctionne après avoir joué avec elle pendant un certain temps. Vous pouvez obtenir un accès direct à la vue de la lecture de la vidéo. Ceci est une méthode de blocs d'inscription à la notification et en tirant des vues pertinentes.

Avis: vous devez retarder l'ajout de sous-visions et / ou accéder à Apple interne. Sous-système pour supprimer la barre NAV pour une personnalisation supplémentaire. P>

[[NSNotificationCenter defaultCenter] 
    addObserverForName:@"UIMoviePlayerControllerDidEnterFullcreenNotification" 
    object:nil 
    queue:nil
    usingBlock:^(NSNotification *note){
          MPMoviePlayerController *theMovieController = [note object];
          UIView *theDestinationVideoView = [[note userInfo] 
          objectForKey:@"UIMoviePlayerControllerFullscreenViewUserInfoKey"];
}];


3 commentaires

Je n'ai aucun succès pour que cela fonctionne, le bloc ne se déclenche jamais, est-ce toujours valable dans 4.0?


OK, semble qu'ils ont corrigé leur erreur d'orthographe, il est maintenant: UimoviePlayControllerdIdentificationLsCreennotification


Puis-je mettre en pause la vidéo programmatique lors de la lecture vidéo en plein écran dans UiWebView?



6
votes

pour iOS 4.3+, Apple a modifié les noms de ces notifications: UimoviePlayControllerDIdentifierInsificationLcreennotification est maintenant UimoviePlonControllerdIdentificationLsCreennotification

UIMOVIEPLAYPONTROLLERDIDEXITELLCREENTIFICATIONNOTIFICATION N'EST MAINTENANT EST UIMOVIEPLAYPONTROLLERDIDEXITELLSEnnotification

Veuillez faire attention: le terme "FullCreen" a changé en "plein écran".

Merci!


1 commentaires

Bien tacheté - j'ai mis à jour ma réponse pour faire référence à votre correction.