Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
Ios addTarget:action:forControlEvents:与单独的UITapgestureRecognitor交互时被忽略_Ios_Objective C - Fatal编程技术网

Ios addTarget:action:forControlEvents:与单独的UITapgestureRecognitor交互时被忽略

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 =

我对iOS编程有些陌生

我有一些代码节略,如下所示

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触发的内容,因为我觉得应该首先触发子视图的操作,而不是在事件上向前。这有意义吗?我修改了我的问题,以满足这一额外要求。