Ios 如何防止手势识别器截取儿童的信息
我有一个包含表视图的UIview 我希望用户能够在表视图中选择项目,并且能够在表视图之外的父视图中识别点击 如果向UIView中添加选项卡手势识别器,则用户无法在表视图中选择项目Ios 如何防止手势识别器截取儿童的信息,ios,uigesturerecognizer,Ios,Uigesturerecognizer,我有一个包含表视图的UIview 我希望用户能够在表视图中选择项目,并且能够在表视图之外的父视图中识别点击 如果向UIView中添加选项卡手势识别器,则用户无法在表视图中选择项目 如何完成此任务?在这种情况下,您必须将手势添加到视图中,如果在tableview上发生触摸,您可以取消手势回调方法,如下所示 1) 将标签设置为tableviewself.tableView.tag=tag 2) 现在,如果触摸tableview,请取消手势,如下所示 - (BOOL)gestureRecognizer
如何完成此任务?在这种情况下,您必须将手势添加到视图中,如果在tableview上发生触摸,您可以取消手势回调方法,如下所示 1) 将标签设置为tableview
self.tableView.tag=tag
2) 现在,如果触摸tableview,请取消手势,如下所示
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
id touchView= touch.view;
if ([touchView isKindOfClass:[UITableView class]] || [touchView isKindOfClass:[UITableViewCell class]] )
{
if ( ((UIView*)touchView).tag == TAG)
return NO;
}
return YES;
}
对于那些如何使用
@IBAction
方法的人。在界面生成器中,点击属性检查器中的手势识别器,只需取消选中“取消视图中的触摸”。GestureRecognitzer.view将返回设置手势的主视图,而不是表格视图。@PoojaManiklalBohora您说得对。我错了,现在只更新了我的答案。看一看。这是正确的,但touch.view将返回UITableviewcelcontentview而不是uitableview。通过这种方法,我们可以在主视图中设置一些标记,比如-100,并检查(touchView.tag!=-100){返回否;}返回是;是的,你说得对。他必须为此做些变通。我们可以做你的代码,如果main可能有一些子视图,在这种情况下,你的代码也不能工作。我说得对吗?但如果您不想使用此视图,则可以通过此委托方法取消手势回调。我的建议肯定会正常工作,因为我们不会为任何视图设置负面标记