滑动手势优先于按钮

时间:2014-12-30 18:49:50

标签: ios uigesturerecognizer

我在视图中有两个UIButtons(一个是YES,另一个是NO)。我现在想要添加一个"没有回答",这将通过在视图上向下滑动来指示。

问题是用户可能会向下滑动视图,但在此过程中会点击其中一个按钮。当发生这种情况时,如果正在进行滑动,我想忽略按下按钮。如果只是轻按按钮,则会记录答案。

因此,如果滑动发生,我想调用滑动手势的动作方法。如果确定没有滑动但触摸了两个按钮中的一个,我想调用它们各自的动作方法。但是如果在滑动过程中触摸了一个按钮,我只想调用滑动手势的动作方法。

我知道有一种方法,但我想知道是否有一种简单的方法可以做到这一点。 TIA的建议。

3 个答案:

答案 0 :(得分:2)

您的按钮应该在视图中注册触摸,以便点击按钮的人可以在他们决定不继续时拖动。

对于您的其他滑动手势,即使滑动越过按钮或结束滑动手势,您的按钮也不会在滑动手势中在视图中注册触摸。

答案 1 :(得分:2)

好的,这似乎有效。在手势识别器上,我使用了:

    UISwipeGestureRecognizer *swipeDown = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipeDown:)];
    swipeDown.direction = UISwipeGestureRecognizerDirectionDown;
    swipeDown.delaysTouchesBegan = YES;
    swipeDown.delegate = self;
    [self addGestureRecognizer:swipeDown];

它们的延迟触发开始= YES允许它在将触摸传递给按钮之前确定是否发生了滑动。因此,如果你滑动,它会调用滑动GR,如果你触摸任一按钮,你就会得到它。谢谢你的回答...

答案 2 :(得分:1)

由于UISwipeGestureRecognizer是"离散"手势,它只会在识别时触发单个动作,并且不会让您检测到手势的结束。

因此,为了防止手势中的其他触摸,我建议使用UIPanGestureRecognizer,因为它可以从头到尾跟踪您的手势。然后,您可以尝试将手势的cancelsTouchesInView属性设置为YES,以取消在识别平移手势时发生的视图中的所有其他触摸,例如:

gesture.cancelsTouchesInView = YES;
gesture.delaysTouchesBegan = YES;