我在视图中有两个UIButtons(一个是YES,另一个是NO)。我现在想要添加一个"没有回答",这将通过在视图上向下滑动来指示。
问题是用户可能会向下滑动视图,但在此过程中会点击其中一个按钮。当发生这种情况时,如果正在进行滑动,我想忽略按下按钮。如果只是轻按按钮,则会记录答案。
因此,如果滑动发生,我想调用滑动手势的动作方法。如果确定没有滑动但触摸了两个按钮中的一个,我想调用它们各自的动作方法。但是如果在滑动过程中触摸了一个按钮,我只想调用滑动手势的动作方法。
我知道有一种方法,但我想知道是否有一种简单的方法可以做到这一点。 TIA的建议。
答案 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;