2

我有一个UIViewUIPanGestureRecognizer附加到它。 我还有一个UIView内有多个UISwipeGestureRecognizers的对象。UIPanGestureRecognizer重叠UISwipeGestureRecognizer

UIPanGestureRecognizerUISwipeGestureRecognizers与对象重叠相关联。

有没有什么办法让UIPanGestureRecognizer完全忽略UIView的某个区域或使物体的UISwipeGestureRecognizers占先,并覆盖UIView'sUIPanGestureRecognizer

回答

2

解决使用该委托的方法这个问题:

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

感谢您指出我在正确的方向@MikeS

4

你想要的是什么......

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

    return YES; 
} 

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

+0

其他建议?我注意到在该方法的文档中它说:“...返回NO不能保证防止同时识别,因为另一个手势的代表可能会返回YES”。有什么我应该做的与我的代表不同? – tylercasson 2012-08-01 20:56:23

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个子视图,只有其中一个会受到手势的影响。

希望它有帮助。 Shefy