Ios addTarget:action:forControlEvents:与单独的UITapgestureRecognitor交互时被忽略
我对iOS编程有些陌生 我有一些代码节略,如下所示Ios addTarget:action:forControlEvents:与单独的UITapgestureRecognitor交互时被忽略,ios,objective-c,Ios,Objective C,我对iOS编程有些陌生 我有一些代码节略,如下所示 UIView *someSubView = [[UIView alloc] initWithFrame:...]; [self addSubView:someSubView]; [someSubView addTarget:self action:@selector(_handleTapOnView:) forControlEvents:UIControlEventTouchUpInside]; _tapGestureRecognizer =
UIView *someSubView = [[UIView alloc] initWithFrame:...];
[self addSubView:someSubView];
[someSubView addTarget:self action:@selector(_handleTapOnView:) forControlEvents:UIControlEventTouchUpInside];
_tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(_handleTap:)];
_tapGestureRecognizer.delegate = self;
[self.view addGestureRecognizer:_tapGestureRecognizer];
不幸的是,手势识别器会触发,而my views addTarget调用不会触发。我已经试着注释了手势识别器代码,它是有效的,所以我知道它不是在子视图上调用addTarget
我最初通过使用手势识别器:shouldReceiveTouch:解决了这个问题,并对子视图进行了命中测试,但我觉得我缺少一些基本的理解,不需要添加手动命中测试
需要注意的是,我不希望在点击子视图时执行_TapGestureRecognitor中的_handleTap中的代码
这里有什么指导吗?谢谢 尝试使用:
_tapGestureRecognizer.cancelsTouchesInView = NO;
否则,手势识别器将截获触摸,并且不会进一步转发它们。换句话说,手势识别器获得触摸并处理它,并且由于它取消了触摸,因此没有其他对象获得触摸。如果不取消,触摸将被转发给任何其他对象识别器或视图来处理。嘿,谢谢你的回答。这是可行的,但它的副作用是仍然会触发_tapGestureRecognizer。我应该在我的原始问题中添加我不希望TapGestureRecognitor触发的内容,因为我觉得应该首先触发子视图的操作,而不是在事件上向前。这有意义吗?我修改了我的问题,以满足这一额外要求。