【问题标题】:Pass taps through a UIPanGestureRecognizer通过 UIPanGestureRecognizer 传递水龙头
【发布时间】:2013-04-10 01:04:43
【问题描述】:

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

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

有人可以帮忙吗?谢谢!

【问题讨论】:

    标签: iphone ios objective-c uigesturerecognizer


    【解决方案1】:

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

    UIPanGestureRecognizer *swipe = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(swipeDetected:)];
    swipe.maximumNumberOfTouches = 1;
    swipe.delaysTouchesBegan =YES;
    swipe.cancelsTouchesInView = YES;
    [self.gestureRecognitionView addGestureRecognizer:swipe];
    

    【讨论】:

      【解决方案2】:

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

      也看看solution for this question

      【讨论】:

        【解决方案3】:

        如果你想完全阻止识别器接收到触摸,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;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-06-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-14
          相关资源
          最近更新 更多