Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c UIPangestureRecognitor与UISwipegestureRecognitor重叠_Objective C_Uiview_Uigesturerecognizer_Uipangesturerecognizer_Uiswipegesturerecognizer - Fatal编程技术网

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


希望能有帮助。谢菲

还有其他建议吗?我注意到,在该方法的文档中,它说“……返回“否”不能保证阻止同时识别,因为另一个手势的代表可能会返回“是”。我是否应该对我的代表做些不同的事情?