这让我完全难过!
我有一个用于显示/隐藏菜单的Tap Gesture识别器......
我还有一个滑动手势识别器,用于在屏幕之间左右滑动......
然后我还有一个MPMoviePlayerController用于在屏幕上播放视频。
我正在实施gestureRecognizer:shouldReceiveTouch:
并排除所有UIControl以及任何前缀为“MP”的内容。
问题是,每当我在电影播放器控件上左右滑动时,shouldReceiveTouch
只会注意到Tap Gesture Recognizer,而不是滑动。它也会正确地跟踪NO,但STILL会触发滑动方法。
我试过看gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer
,但这真的让我很困惑,因为它还包含一个UIPanGestureRecognizer ......那是从哪里来的?
请帮助,我累了,并且有一个很长的截止日期......并且无法解决这个问题:(
谢谢大家!
: - 乔
答案 0 :(得分:1)
我也有同样的问题。 这就是我为克服这个问题所做的工作。 在[self doSomething ...]方法中,我做了一些动画,如果动画结束了 它将识别器的启用状态设置回YES。 请注意,您将正确的识别器设置回启用状态! (我在这里 到(左/右),所以gestureRecognizers数组有2个条目。
- (void)handleSwipeGesture:(UISwipeGestureRecognizer *)recognizer { if (recognizer.state == UIGestureRecognizerStateEnded && recognizer.enabled) { recognizer.enabled = NO; if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) { [self doSomethingInteresting]; } else { [self doSomethingElseInteresting]; } } }
[UIView transitionWithView:self.containerView duration:kAnimationDuration options:UIViewAnimationOptionTransitionCurlDown animations:^{ your animations } completion:^(BOOL finished) { if (self.containerView.gestureRecognizers.count) { ((UISwipeGestureRecognizer *)[self.containerView.gestureRecognizers objectAtIndex:0]).enabled = YES; } }];
答案 1 :(得分:1)
好的,我必须道歉......它没有收到shouldReceiveTouch
消息的原因是因为我没有设置它的代表!真是个笨蛋。我正在为轻拍手势设置代表,但不是轻扫手势。现在一切正常。
抱歉! : - )