Browse Source

fix dismiss of player view controller when pressing menu button to cancel scrubbing:
disable simultaneous recognition of menu press recognizer of our VC and the one of the presentation controller by explicitly only allowing simultaneous recognition for the pan an siri remote recognizer

Tobias Conradi 9 years ago
parent
commit
0948628c64
1 changed files with 9 additions and 2 deletions
  1. 9 2
      Apple-TV/Playback/VLCFullscreenMovieTVViewController.m

+ 9 - 2
Apple-TV/Playback/VLCFullscreenMovieTVViewController.m

@@ -41,6 +41,8 @@ typedef NS_ENUM(NSInteger, VLCPlayerScanState)
 
 
 @property (nonatomic, readonly, getter=isSeekable) BOOL seekable;
 @property (nonatomic, readonly, getter=isSeekable) BOOL seekable;
 
 
+@property (nonatomic) NSSet<UIGestureRecognizer *> *simultaneousGestureRecognizers;
+
 @end
 @end
 
 
 @implementation VLCFullscreenMovieTVViewController
 @implementation VLCFullscreenMovieTVViewController
@@ -77,11 +79,13 @@ typedef NS_ENUM(NSInteger, VLCPlayerScanState)
 
 
     self.bufferingLabel.text = NSLocalizedString(@"PLEASE_WAIT", nil);
     self.bufferingLabel.text = NSLocalizedString(@"PLEASE_WAIT", nil);
 
 
-    // Panning and Swiping
+    NSMutableSet<UIGestureRecognizer *> *simultaneousGestureRecognizers = [NSMutableSet set];
 
 
+    // Panning and Swiping
     UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGesture:)];
     UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGesture:)];
     panGestureRecognizer.delegate = self;
     panGestureRecognizer.delegate = self;
     [self.view addGestureRecognizer:panGestureRecognizer];
     [self.view addGestureRecognizer:panGestureRecognizer];
+    [simultaneousGestureRecognizers addObject:panGestureRecognizer];
 
 
     // Button presses
     // Button presses
     UITapGestureRecognizer *playpauseGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(playPausePressed)];
     UITapGestureRecognizer *playpauseGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(playPausePressed)];
@@ -110,6 +114,9 @@ typedef NS_ENUM(NSInteger, VLCPlayerScanState)
     VLCSiriRemoteGestureRecognizer *siriArrowRecognizer = [[VLCSiriRemoteGestureRecognizer alloc] initWithTarget:self action:@selector(handleSiriRemote:)];
     VLCSiriRemoteGestureRecognizer *siriArrowRecognizer = [[VLCSiriRemoteGestureRecognizer alloc] initWithTarget:self action:@selector(handleSiriRemote:)];
     siriArrowRecognizer.delegate = self;
     siriArrowRecognizer.delegate = self;
     [self.view addGestureRecognizer:siriArrowRecognizer];
     [self.view addGestureRecognizer:siriArrowRecognizer];
+    [simultaneousGestureRecognizers addObject:siriArrowRecognizer];
+
+    self.simultaneousGestureRecognizers = simultaneousGestureRecognizers;
 
 
     self.audioView.hidden = YES;
     self.audioView.hidden = YES;
     self.audioArtworkImageView.animateImageSetting = YES;
     self.audioArtworkImageView.animateImageSetting = YES;
@@ -774,7 +781,7 @@ currentMediaHasTrackToChooseFrom:(BOOL)currentMediaHasTrackToChooseFrom
 }
 }
 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
 {
 {
-    return YES;
+    return [self.simultaneousGestureRecognizers containsObject:gestureRecognizer];
 }
 }
 
 
 #pragma mark - meta data recipient
 #pragma mark - meta data recipient