【问题标题】:Is it possible to have a UIPanGesture and UISwipeGesture together?是否可以同时使用 UIPanGesture 和 UISwipeGesture?
【发布时间】:2012-03-28 12:39:26
【问题描述】:

我有一个 UIIMageView 子类,我正在添加一个 UIPanGestureRecognizer 和一个 UISwipeGestureRecognizer,如下所示:

self.userInteractionEnabled = YES;

UIPanGestureRecognizer * panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan:)];
[self addGestureRecognizer:panGesture];

UISwipeGestureRecognizer * swipeUp = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeUp:)];
swipeUp.direction = UISwipeGestureRecognizerDirectionUp;
[self addGestureRecognizer:swipeUp];

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

但是当我向上或向下滑动时,我的选择器不会被调用,但 pan 总是如此。

任何澄清都会有所帮助。

谢谢

【问题讨论】:

  • 尝试使用 panGesture 的这个属性 "minimumNumberOfTouches" 为了识别这个手势,可以触摸视图的最小手指数。将其设置为 2 并检查是否识别滑动?
  • 是的,这行得通,但是我需要两根手指来做我的平底锅,所以这并不是我真正需要的。

标签: iphone objective-c xcode ipad


【解决方案1】:

问题是滑动手势也会被识别为 panGesture。

您需要做的是将委托设置为实现该方法的类:

- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return YES;
}

这将允许您同时识别这两个手势,但您需要清楚的是,当您滑动被调用时,您的平移也会被调用。

From apple documentation:

当通过gestureRecognizer 或otherGestureRecognizer 识别手势会阻止其他手势识别器识别其手势时调用此方法。注意返回YES保证允许同时识别;另一方面,返回 NO 并不能保证防止同时识别,因为其他手势识别器的委托可能会返回 YES。

【讨论】:

  • 我会试试的。我相信这没问题,因为如果它是一个平底锅,我会检查该区域,如果它是我想要平底锅所在的位置,那么我会处理它,同样用于滑动。
  • 一件事,当我按照你的建议去做时,我可以使用我的 UIImageView 类吗?我会在我的 UIImageView 类中创建该方法,然后为每个手势执行类似 [panGesture setDelegate:self] 的操作?
  • 是的,我相信你可以。第二个问题也是。
  • 太好了,我实现了你的建议……它对我很有用,谢谢!!
  • @ggrana:感谢您解决了我花了几天时间才弄清楚的问题。如果我可以添加一些东西:这行代码应该放在正确的文件中。我首先将它放在 Delegate 文件本身中,但是...... naaaaaa 没有成功。这么细心的人。
猜你喜欢
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
  • 2021-08-17
  • 1970-01-01
相关资源
最近更新 更多