2

我有UIView一个UIPanGestureRecognizer附在它上面的。我在其中也有一个对象,UIView它有多个UISwipeGestureRecognizers.

UIPanGestureRecognizerUISwipeGestureRecognizers关联的对象重叠。

有没有办法让UIPanGestureRecognizer完全忽略的某个区域UIView或使对象的UISwipeGestureRecognizers优先并覆盖UIView's UIPanGestureRecognizer

4

3 回答 3

4

你想要的是...

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
     if(gestureRecognizer == myPanGesture) return NO;

     return YES;
}

或该委托方法的类似用法。它是 UIGestureRecognizerDelegate 协议的一部分。如果您正在滑动,这将使您无法识别平移。

于 2012-08-01T19:16:01.657 回答
2

使用此委托方法解决了此问题:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
      if ([touch.view isKindOfClass:[UIButton class]] && gestureRecognizer == recognizer) return NO;
      return YES;
}

感谢您为我指明正确的方向@MikeS

于 2012-08-02T21:21:40.433 回答
1

非常感谢您的回答,这对我的问题有所帮助。

我只想分享我的解决方案,因为它可能会有所帮助:

-(BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
NSLog2(@"Gesture on Class %@ tag %i", [touch.view class], touch.view.tag);////////

if (touch.view.tag == kTagToIgnoreGestures){
    return NO;
}
return YES;

}

我定义了一个kTagToIgnoreGestures,它是应该忽略手势的视图标签。这样,我可以在一个带有 UIGestureRecognizer 的视图中拥有 2 个子视图,其中只有一个会受到手势的影响。

希望能帮助到你。谢菲

于 2012-10-18T12:14:52.350 回答