Y at-il un moyen de désactiver le bouton plein écran du MPMoviePlayerController?iPad MPMoviePlayerController - Désactiver le mode plein écran
Répondre
Non, il n'y a aucun moyen. J'espère que la prochaine mise à jour
Vous pouvez cacher les commandes de lecture et d'ajouter vos propres ceux personnalisés, cela empêchera les boutons par défaut étant rendus à tous
Ie avec
[player setMovieControlMode:MPMovieControlModeNone];
En fonction de vos besoins, vous pouvez aussi tout simplement désactiver toutes les interactions de l'utilisateur sur la vue du lecteur.
player.view.userInteractionEnabled = NO;
Filaire fait cela. Pour les vidéos qui commencent en plein écran, elles ont les contrôles MPMoviePlayerController standard, mais les boutons plein écran ne sont pas disponibles. Et ils utilisent les standards intégrés, puisqu'ils ont soudainement un bouton AirPlay avec 4.2.
Il y a un tricheur:
MPMoviePlayerController *mpc = (...some instance...)
UIView *fsbutton = [[mpc view] viewWithTag:512];
[fsbutton setHidden:YES];
Le hic principal est, vous devez le faire dans viewDidAppear:
ou similaire, car la vue MoviePlayer se fixe quelque part à l'intérieur didMoveToWindow
ou didMoveToSuperview
, qui arrive après viewWillAppear:
. Donc, vous obtenez un bref éclair du bouton plein écran. D'autres captures évidentes incluent: cassant contre Apple changeant cette valeur d'étiquette 512 (bien que cela fonctionne dans 3.2 - 4.2); et bien sûr, Apple préférerait ne pas le faire.
La solution approuvée est de définir le style de contrôle à MPMovieControlStyleNone
et de lancer vos propres contrôles de transport, ce qui représente plus de travail.
L'autre problème est que le pincement pour zoomer le geste qui amène aussi l'utilisateur en plein écran contourne cette idée géniale. – Roger
et essayez de supprimer les mouvements – SAKrisT
Apple rejettera probablement votre application si vous essayez de modifier MPMovePlayerController au-delà de l'API publique. Voici une citation de [docs d'Apple] (https://developer.apple.com/library/ios/documentation/MediaPlayer/Reference/MPMoviePlayerController_Class/Reference/Reference.html): "Considérez une vue de lecteur de film comme opaque Vous pouvez ajouter vos propres sous-vues personnalisées pour superposer le contenu en haut du film mais vous ** ne devez jamais modifier ses sous-vues existantes. ** " – n8tr
juste fait:
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieEventFullscreenHandler:)
name:MPMoviePlayerWillEnterFullscreenNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieEventFullscreenHandler:)
name:MPMoviePlayerDidEnterFullscreenNotification
object:nil];
self.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
}
- (void)movieEventFullscreenHandler:(NSNotification*)notification {
[self.moviePlayer setFullscreen:NO animated:NO];
[self.moviePlayer setControlStyle:MPMovieControlStyleEmbedded];
}
Bonne idée, je pensais pouvoir l'utiliser pour déclencher une alerte pour expliquer pourquoi fullscreen n'était pas autorisé dans le contexte actuel et le forçait à rester en mode embarqué. Malheureusement, ce qui se passe réellement, c'est que vous obtenez encore la transition en plein écran, puis ça revient à être intégré, ce qui est vraiment horrible. – Roger
Je viens d'essayer de le faire, mais malheureusement fullscreen ignore le MPMovieControlStyleEmbedded et utilise FullScreen, qui, quand je bascule en plein écran alors, il va encore plus grand :( – lordB8r
bouton Fullscreen avec bouton de pause peut être retirée.
[self.videoPlayer setControlStyle:MPMovieControlStyleNone];
afin de désactiver le passage en mode plein écran, des boutons de forme ou d'un geste de pincement, vous pouvez utiliser ceci:
moviePlayer.controlStyle = MPMovieControlStyleNone;
moviePlayer.view.userInteractionEnabled =NO;
Je sais, c'est un peu vieillot, mais de toute façon. J'ai fait des recherches dans ce sens et j'ai l'impression d'avoir trouvé une réponse. Je ne sais pas, pourquoi ça marche, mais ça l'est.
-(void) playMovieAtURL: (NSURL*) theURL {
MPMoviePlayerController* theMovie =
[[MPMoviePlayerController alloc] initWithContentURL: theURL];
//That line is for ARC. Without it, it may not work.
self.moviePlayer = theMovie;
theMovie.scalingMode = MPMovieScalingModeAspectFill;
theMovie.controlStyle = MPMovieControlStyleFullscreen;
theMovie.repeatMode = MPMovieRepeatModeOne;
//Here you'd better use your custom ViewController subclass, if you want autorotating and all that stuff.
UIViewController * vc = [UIViewController new];
[vc.view addSubview:theMovie.view];
theMovie.fullscreen = YES;
theMovie.view.frame = vc.view.bounds;
vc.view = theMovie.view;
[self presentModalViewController:vc animated:YES];
theMovie.fullscreen = YES;
[theMovie prepareToPlay];
[theMovie play];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
}
// Une fois l'animation terminée, relâchez le contrôleur.
-(void) myMovieFinishedCallback: (NSNotification*) aNotification
{
[self dismissModalViewControllerAnimated:YES];
MPMoviePlayerController* theMovie = [aNotification object];
[[NSNotificationCenter defaultCenter]
removeObserver: self
name: MPMoviePlayerPlaybackDidFinishNotification
object: theMovie];
[self.moviePlayer.view removeFromSuperview];
self.moviePlayer = nil;
// Release the movie instance created in playMovieAtURL:
}
Si le ne chose que vous voulez faire est pincée désactiver pour passer en mode plein écran (à savoirmaintenir l'interaction activée et quel que soit le style de contrôle que vous voulez), vous pouvez utiliser ceci:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSSet *set = [event allTouches];
NSArray *arr = [set allObjects];
for (int i = 0; i < arr.count; i++) {
UITouch *touch = (UITouch *) [arr objectAtIndex:i];
NSArray *recognisers = touch.gestureRecognizers;
for (UIGestureRecognizer *recogniser in recognisers) {
if (recogniser.enabled && [recogniser isMemberOfClass:[UIPinchGestureRecognizer class]]) {
recogniser.enabled = NO;
}
}
}
}
bloc simple pour supprimer pincée de zoom ici
espère que cela aide
ça marche avec moi sur iOS6
for (UIView *view in moviePlayer.view.subviews) {
for(UIPinchGestureRecognizer *pinch in view.gestureRecognizers){
if([pinch isKindOfClass:[UIPinchGestureRecognizer class]])
[view removeGestureRecognizer:pinch];
}
}
Vous pouvez définir controlStyle sur Fullscreen. ces contrôles sont quelque peu différents, mais ils ne disposent pas d'un bouton plein écran!
[_moviePlayerController setControlStyle:MPMovieControlStyleFullscreen];
Genius! Ce devrait certainement la meilleure réponse – PICyourBrain
Cela a fonctionné sur iOS 7, iPhone 5s. Notez que j'écoute seulement "DID" et pas la notification "WILL" ainsi que l'exécuter animée. Je pense que cela fonctionne car cela donne au système le temps de réagir. Lorsque j'ai utilisé le "WILL" et "DID" comme indiqué dans les réponses ci-dessus, cela a conduit à un écran noir sans contrôles. Il y a un petit pépin qui est visible quand la transition se produit, mais j'ai besoin des boutons de lecture/nettoyage à partir de l'image intégrée.
Malheureusement, aucun d'entre ci-dessus a fonctionné pour moi bien, si la cueillette qui précède, je mis à exécution les suivantes (et a bien fonctionné):
- Masquer le bouton plein écran.
Ajoutez ce code dans la méthode d'initialisation du lecteur vidéo.
.... //Because we have to wait until controllers are shown [self performSelector:@selector(hideFullscreenButton) withObject:self afterDelay:0.5]; ...
Ajouter les méthodes:
-(void) hideFullscreenButton{ //Hide full screen mode button [self hideFullscreenSubview:movieClip.view.subviews]; } -(void) hideFullscreenSubview:(NSArray*)arr{ for(UIView *v in arr){ if([v.subviews count]>0) [self hideFullscreenSubview:v.subviews]; else NSLog(@"%@",v); if(v.frame.origin.x==975){ v.hidden=TRUE; } } }
Le problème repose qu'il n'y a pas d'étiquette pour identifier vue que vous devez cacher. Dans mon cas je le découvre par les coordonnées de la vue.
- Remplacer les gestes du tap pour ne pas autoriser le zoom en plein écran.
movieClip.controlStyle = MPMovieControlStyleEmbedded; //Disable tap for not allowing that video control set on a full screen mode. UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(doSingleTap)]; singleTap.numberOfTapsRequired = 1; [movieClip.view addGestureRecognizer:singleTap]; UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(doDoubleTap)]; doubleTap.numberOfTapsRequired = 2; [movieClip.view addGestureRecognizer:doubleTap]; [singleTap requireGestureRecognizerToFail:doubleTap];
et ajoutez les méthodes de sélection:
-(void) doSingleTap{ //DO NOTHING!!! } -(void) doDoubleTap{ //DO NOTHING!!! }
La première solution a fonctionné parfaitement pour moi, Au bas de la version Swift – diegomen
il cache l'épurateur pas le bouton plein écran –
Mettez un UIView
ou UIButton
avec un fond transparent au-dessus de la vue qui montre la vidéo, de sorte que l'utilisateur ne sera pas en mesure de appuyez sur la vue qui contient la vidéo.
Ceci est la version Swift de la première solution de Javier Calatrava Llavería:
func hideFullScreenButton() {
self.hideFullScreenSubview((self.moviePlayerController?.view.subviews)!)
}
func hideFullScreenSubview(subviews: [UIView]) {
for view: UIView in subviews {
if view.subviews.count > 0 {
self.hideFullScreenSubview(view.subviews)
}
if view.frame.origin.x == 631 {
view.hidden = true
}
}
}
Et lorsque l'utilisateur tape sur Play:
self.performSelector(#selector(VideoViewController.hideFullScreenButton), withObject: self, afterDelay: 0.5)
(VideoViewController est le contrôleur de vue dans lequel je le MPMoviePlayerController)
- 1. Comment désactiver les boutons Précédent et Suivant sur MPMoviePlayerController en mode plein écran?
- 2. Mode plein écran Flash
- 3. MPMoviePlayerController film plein écran dans un UIWebView
- 4. Flex en mode plein écran?
- 5. Comment implémenter le mode plein écran?
- 6. Mode plein écran dans silverlight
- 7. Application Windows Mobile en mode plein écran
- 8. Un indicateur UIActivityIndicator peut-il être affiché sur un MPMoviePlayerController en mode plein écran?
- 9. UIImagePicker en plein écran sur iPad
- 10. Site web iPad plein écran dans Safari
- 11. Affichage correct et rejet plein écran MPMoviePlayerController dans iOS 3.2 (iPad)
- 12. Test Flash en mode plein écran
- 13. Ouverture d'Acrobat en mode plein écran
- 14. Masquage du titre en mode plein écran?
- 15. Lecture vidéo pas en mode plein écran
- 16. Mode Plein écran dans Flash AS2
- 17. Changer de page en mode plein écran
- 18. Fenêtre TOPMOST en mode plein écran
- 19. Flex DisplayObject en mode plein écran
- 20. mpmovieplayercontroller Problèmes ipad
- 21. Commandes MPMoviePlayerController - supprimer les boutons plein écran et aspect?
- 22. MPMoviePlayerController, ne pas autoriser le plein écran mais autoriser la navigation dans le clip?
- 23. iOS Utilisation de MPMoviePlayerViewController en plein écran (iPad)
- 24. Le lecteur Flash se fige en mode plein écran
- 25. Comment demander le mode plein écran dans une application jQTouch?
- 26. Comment changer le mode plein écran pendant la lecture vidéo
- 27. Mode plein écran pour l'affichage des vidéos en utilisant VideoView
- 28. Safari bug plein écran
- 29. Comment créer un bouton d'affichage en mode plein écran pour basculer ma page google maps en mode plein écran?
- 30. Projecteur plein écran flash
:( Merci! – MathieuF