我对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];
不幸的是,手势识别器触发并且我的视图addTarget调用没有。我已经尝试过评论手势识别器代码并且它有效,所以我知道它不是在子视图上调用addTarget。
我最初通过使用gestureRecognizer解决了这个问题:shouldReceiveTouch:并对子视图进行了点击测试,但我觉得我在这里缺少一些基本的理解,不会要求我添加手动命中测试
重要的是要注意,当我点击我的子视图时,我不希望_tapGestureRecognizer中_handleTap中的代码执行。
这里有什么指导吗?谢谢!
答案 0 :(得分:0)
尝试使用:
_tapGestureRecognizer.cancelsTouchesInView = NO;
否则,手势识别器将拦截触摸并且不会进一步转发它们(换句话说,手势识别器获得触摸,处理它,并且因为它取消它,所以没有其他物体获得触摸)。通过不取消,触摸被转发给任何其他对象(识别者或视图)来处理它。