【发布时间】:2014-02-12 09:38:22
【问题描述】:
我在同一个视图中添加了滑动手势识别器和平移手势识别器。这些手势应该是互斥的。
为了做到这一点,我在滑动手势上添加了约束
[swipeGesture requireGestureToFail:panGesture];
(因为平移手势应该优先)
问题是平移手势总是被调用 - 即使在非常快速的滑动期间也是如此。
为了克服这个问题,我将自己设置为平移手势的代表。在委托方法中,我设置了一些代码如下:
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
// check if it is the relevant view
if (gestureRecognizer.view == self.myViewWithTwoGestures)
{
// check that it is the pan gesture
if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]])
{
UIPanGestureRecognizer *pan = (UIPanGestureRecognizer *)gestureRecognizer;
CGPoint velocity = [pan velocityInView:gestureRecognizer.view];
// added an arbitrary velocity for failure
if (ABS(velocity.y) > 100)
{
// fail if the swipe was fast enough - this should allow the swipe gesture to be invoked
return NO;
}
}
}
return YES;
}
是否有建议的速度来确保良好的行为?还有其他方法可以强制平移手势失败吗?
【问题讨论】:
-
你试过
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer方法return YES;吗? -
我不想同时使用它——这就是为什么我在问题中写了“独家”
标签: ios objective-c uigesturerecognizer uipangesturerecognizer