2010-09-28 17 views
1

Comme MPMoviePlayerViewController prend en charge le geste de pincement (deux doigts se séparent) pour rendre le lecteur de film plein écran, existe-t-il une méthode pour supprimer ce geste? Parce que si j'utilise le geste, le film joue toujours sans la vidéo. Je pense que la vue du contrôleur de film est supprimée de super vue.Comment éviter les gestes de pincement dans MPMoviePlayerViewController?

J'ai essayé et primordial touchesBegan la notification WillEnterFullScreenNotification & DidEnterFullScreenNotfication, mais cela n'a pas fonctionné.

Répondre

2

J'ai eu un problème similaire avec le "geste de pincement" réorientant l'affichage vidéo de paysage à portrait. Je l'ai résolu en accédant à la propriété view de l'objet MPMoviePlayerController et en définissant userInteractionEnabled à NO.

moviePlayer = [[MPMoviePlayerController alloc] init]; 
[moviePlayer view].userInteractionEnabled = NO; 

Cela empêche tout utilisateur touche de passer à travers et en changeant l'état d'orientation ou plein écran de l'MPMoviePlayerController.

+0

Ce code désactive également les contrôles vidéo. J'ai ajouté une solution de travail. – Pion

1

Dans mon cas, la réponse acceptée de jontron/curhipster n'a pas fonctionné. Mais quand j'ai réglé les MoviePlayers controlStyle sur MPMovieScalingModeFill, le pincement futé.

Mon code:

NSString *filepath = [[NSBundle mainBundle] pathForResource:@"tutorial" ofType:@"mov"]; 
NSURL *fileURL = [NSURL fileURLWithPath:filepath]; 
self.moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL]; 

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(moviePlaybackComplete:) 
              name:MPMoviePlayerPlaybackDidFinishNotification 
              object:self.moviePlayerController]; 

[self.view addSubview:self.moviePlayerController.view]; 
self.moviePlayerController.fullscreen = YES; 
self.moviePlayerController.scalingMode = MPMovieScalingModeFill; 
self.moviePlayerController.controlStyle = MPMovieControlStyleFullscreen; 
[self.moviePlayerController play]; 
1

Ceci est la bonne solution

[[[self.moviePlayer view] subviews] enumerateObjectsUsingBlock:^(id view, NSUInteger idx, BOOL *stop) { 
      [[view gestureRecognizers] enumerateObjectsUsingBlock:^(id pinch, NSUInteger idx, BOOL *stop) { 
       if([pinch isKindOfClass:[UIPinchGestureRecognizer class]]) { 
        [view removeGestureRecognizer:pinch]; 
       } 
      }]; 
     }];