我正在尝试找出如何以正确的方式完成这个任务。我试图描述一下情况:
我正在将一个UITableView
作为UIView
的子视图添加进去。当UIView
响应点击和pinchGestureRecognizer
时,但这样做时,tableview不再响应这两个手势(仍然响应滑动手势)。
我已经用了以下代码使其正常工作,但显然这不是一个好的解决方案,我相信有更好的方法。这段代码放在UIView
中(父视图):
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
if([super hitTest:point withEvent:event] == self) {
for (id gesture in self.gestureRecognizers) {
[gesture setEnabled:YES];
}
return self;
}
for (id gesture in self.gestureRecognizers) {
[gesture setEnabled:NO];
}
return [self.subviews lastObject];
}
hitTest:withEvent:
或pointInside:withEvent:
的操作。 - DarkDustreturn !(touch.view == givenView);
来测试,如果您只想排除给定的视图,或者当您想要停止识别器处理各种不同子视图上的触摸时,可以使用return !(touch.view.tag == kTagNumReservedForExcludingViews);
。 - cate- (BOOL)isDescendantOfView:(UIView *)view
进行点击测试。在子类化UIGestureRecognizer时,在- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
中也可以正常工作。 - Christoph