UISwipeGestureRecognizer,UITapGestureRecognizer和MPMoviePlayerController的问题:-(

时间:2010-11-23 12:14:10

标签: ipad ios mpmovieplayercontroller uigesturerecognizer

这让我完全难过!

我有一个用于显示/隐藏菜单的Tap Gesture识别器......

我还有一个滑动手势识别器,用于在屏幕之间左右滑动......

然后我还有一个MPMoviePlayerController用于在屏幕上播放视频。

我正在实施gestureRecognizer:shouldReceiveTouch:并排除所有UIControl以及任何前缀为“MP”的内容。

问题是,每当我在电影播放器​​控件上左右滑动时,shouldReceiveTouch只会注意到Tap Gesture Recognizer,而不是滑动。它也会正确地跟踪NO,但STILL会触发滑动方法。

我试过看gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer,但这真的让我很困惑,因为它还包含一个UIPanGestureRecognizer ......那是从哪里来的?

请帮助,我累了,并且有一个很长的截止日期......并且无法解决这个问题:(

谢谢大家!

: - 乔

2 个答案:

答案 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消息的原因是因为我没有设置它的代表!真是个笨蛋。我正在为轻拍手势设置代表,但不是轻扫手势。现在一切正常。

抱歉! : - )