5

我想检测整个屏幕上的滑动,但是,屏幕包含UIButtons,如果用户点击这些按钮之一,我希望触发 Touch Up Inside 事件。我在UIView屏幕顶部创建了一个,并UIPanGestureRecognizer在其上添加了一个来检测滑动,但是现在当我检测到它是点击而不是滑动时,我需要通过该视图传递手势。

我知道如何区分手势,但我不知道如何将它传递给下面的视图。

有人可以帮忙吗?谢谢!

4

3 回答 3

3

感谢您的回答。该链接帮助我解决了部分问题。我已将按钮设置为我的 gestureRecognizer 视图的子视图,现在我可以从其中一个按钮开始滑动(并继续使用这些按钮)。我设法通过使用以下代码来防止按钮进入“向下”状态:

UIPanGestureRecognizer *swipe = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(swipeDetected:)];
swipe.maximumNumberOfTouches = 1;
swipe.delaysTouchesBegan =YES;
swipe.cancelsTouchesInView = YES;
[self.gestureRecognitionView addGestureRecognizer:swipe];
于 2013-04-17T16:43:52.437 回答
2

UIGestureRecognizer cancelsTouchesInView 有一个 BOOL 属性。默认为是。将其设置为 NO ,触摸将传递给 UIView

也看看 这个问题的解决方案

于 2013-04-17T10:08:42.567 回答
0

如果您想完全阻止识别器接收触摸,可以使用UIGestureRecognizerDelegate一种方法:gestureRecognizer:shouldReceiveTouch:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    // don't override any other recognizers
    if (gestureRecognizer != panRecognizer) {
        return YES;
    }

    CGPoint touchedPoint = [touch locationInView:self.someButton];

    return CGRectContainsPoint(self.someButton.bounds, touchedPoint) == NO;
}
于 2013-04-17T17:14:55.510 回答