2

这让我完全难住了!

我有一个用于显示/隐藏菜单的点击手势识别器......

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

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

我正在实现gestureRecognizer:shouldReceiveTouch:并排除所有 UIControls 和任何具有前缀“MP”的东西。

问题是,每当我在电影播放器​​控件上左右滑动时,shouldReceiveTouch只会注意到点击手势识别器,而不是滑动。它还正确地跟踪 NO,但仍然触发了刷卡方法。

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

请帮忙,我很累,而且截止日期很长......而且无法解决:(

谢谢你们!

:-乔

4

2 回答 2

1

我也有同样的问题。这是我为克服这个问题所做的。在 [self doSomething...] 方法中,我做了一些动画,如果动画完成,它将识别器的启用状态设置回 YES。请注意,您将正确的识别器重新设置为启用!(这里我必须(左/右),所以gestureRecognizers数组有2个条目。

- (void)handleSwipeGesture:(UISwipeGestureRecognizer *)recognizer
{
    if (recognizer.state == UIGestureRecognizerStateEnded && Recognizer.enabled) {
        识别器.启用=否;
        如果(recognizer.direction == UISwipeGestureRecognizerDirectionLeft)
        {
            [自己做一些有趣的事情];
        }
        别的 {
            [self doSomethingElseInteresting];
        }
    }
}
[UIView transitionWithView:self.containerView
          持续时间:kAnimationDuration
            选项:UIViewAnimationOptionTransitionCurlDown
         动画:^{ 你的动画 }
         完成:^(布尔完成){
                如果(self.containerView.gestureRecognizers.count){
             ((UISwipeGestureRecognizer *)[self.containerView.gestureRecognizers objectAtIndex:0]).enabled = YES;
} }];
于 2010-11-25T09:04:27.677 回答
1

好吧,我必须道歉......它没有收到shouldReceiveTouch消息的原因是因为我没有设置它的代表!真是个笨蛋。我正在为点击手势设置代表,但不是滑动手势。现在一切正常。

对不起!:-)

于 2010-11-26T10:45:08.543 回答