Objective c UIPangestureRecognitor与UISwipegestureRecognitor重叠
我有一个Objective c UIPangestureRecognitor与UISwipegestureRecognitor重叠,objective-c,uiview,uigesturerecognizer,uipangesturerecognizer,uiswipegesturerecognizer,Objective C,Uiview,Uigesturerecognizer,Uipangesturerecognizer,Uiswipegesturerecognizer,我有一个ui视图,它附带了一个ui测试识别器。 我在UIView中还有一个对象,它有多个uisweegestureerecognizers 与对象重叠关联的UIPangestureRecognitor和UIWipegestureRecognitors 有没有办法让UIPangestureRecognitor完全忽略UIView的某个区域,或者让对象的UIWipegestureRecognitors优先并覆盖UIView的UIPangestureRecognitor?您想要的是 -(BOOL)ge
ui视图
,它附带了一个ui测试识别器
。
我在UIView
中还有一个对象,它有多个uisweegestureerecognizers
与对象重叠关联的UIPangestureRecognitor
和UIWipegestureRecognitors
有没有办法让UIPangestureRecognitor
完全忽略UIView
的某个区域,或者让对象的UIWipegestureRecognitors
优先并覆盖UIView的UIPangestureRecognitor
?您想要的是
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
if(gestureRecognizer == myPanGesture) return NO;
return YES;
}
或该委托方法的类似用法。它是UIgestureRecognitzerDelegate协议的一部分。这将允许您在刷卡时无法识别平移。使用此委托方法解决了此问题:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isKindOfClass:[UIButton class]] && gestureRecognizer == recognizer) return NO;
return YES;
}
谢谢你为我指出了正确的方向@MikeS非常感谢你的回答,这对我的问题有帮助
我只想与大家分享我的解决方案,因为它会很有帮助:
-(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,它是应该忽略手势的视图标记。
通过这种方式,我可以在使用UIgestureRecognitor的视图中有2个子视图,其中只有一个子视图会受到手势的影响
希望能有帮助。谢菲还有其他建议吗?我注意到,在该方法的文档中,它说“……返回“否”不能保证阻止同时识别,因为另一个手势的代表可能会返回“是”。我是否应该对我的代表做些不同的事情?