MpMovieplayerController gesture recognizer does not start when in full screen

I am trying to use UITapGestureRecognizer to handle the taps on my full screen video. If I omit [self.player setFullscreen:YES animated:NO]; It works, but then my video will not scale to fit the screen.

From my .m:

 - (void)viewDidLoad { [super viewDidLoad]; NSString *videoPath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mov"]; player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:videoPath]]; player.shouldAutoplay = NO; player.view.frame = self.view.bounds; player.scalingMode = MPMovieScalingModeAspectFit; player.controlStyle = MPMovieControlStyleNone; player.fullscreen = YES; self.player = player; [self.player prepareToPlay]; UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; UIView *aView = [[UIView alloc] initWithFrame:player.view.bounds]; [aView addGestureRecognizer:tapGesture]; [self.player.view addSubview:aView]; } - (IBAction)playMovie:(id)sender { //add the MPMoviePlayerViewController to this view (as subview) //Play movie [self.view addSubview:self.player.view]; [self.player setFullscreen:YES animated:NO]; //commenting out this will make it work [self.player play]; } - (void)handleTap:(UITapGestureRecognizer *)recognizer { NSLog(@"tap tap"); } 

From my .h:

 @property (retain, nonatomic) MPMoviePlayerController *player; - (void)handleTap:(UITapGestureRecognizer *)recognizer; 
+4
source share
2 answers

In my comment, I wrote how to get this using the correct full-screen mode ( [self.player setFullscreen:YES animated:NO]; ).

I would suggest that instead, you simply resize the player view to cover the entire screen by setting its frame accordingly.

The initializing code would have to get rid of this player.fullscreen = YES; but I think it is obvious.

+1
source

You can try the following:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterFullScreen:) name:MPMoviePlayerWillEnterFullscreenNotification object:nil]; - (void)willEnterFullScreen:(NSNotification*)notification { UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; UIView *aView = [[UIView alloc] initWithFrame:self.player.backgroundView.bounds]; [aView addGestureRecognizer:tapGesture]; [self.view.window addSubview:aView]; } 

and then remove your slave when the message MPMoviePlayerWillExitFullscreenNotification is posted.

+2
source

All Articles