Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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 如何防止手势识别器截取儿童的信息_Ios_Uigesturerecognizer - Fatal编程技术网

Ios 如何防止手势识别器截取儿童的信息

Ios 如何防止手势识别器截取儿童的信息,ios,uigesturerecognizer,Ios,Uigesturerecognizer,我有一个包含表视图的UIview 我希望用户能够在表视图中选择项目,并且能够在表视图之外的父视图中识别点击 如果向UIView中添加选项卡手势识别器,则用户无法在表视图中选择项目 如何完成此任务?在这种情况下,您必须将手势添加到视图中,如果在tableview上发生触摸,您可以取消手势回调方法,如下所示 1) 将标签设置为tableviewself.tableView.tag=tag 2) 现在,如果触摸tableview,请取消手势,如下所示 - (BOOL)gestureRecognizer

我有一个包含表视图的UIview

我希望用户能够在表视图中选择项目,并且能够在表视图之外的父视图中识别点击

如果向UIView中添加选项卡手势识别器,则用户无法在表视图中选择项目


如何完成此任务?

在这种情况下,您必须将手势添加到视图中,如果在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可能有一些子视图,在这种情况下,你的代码也不能工作。我说得对吗?但如果您不想使用此视图,则可以通过此委托方法取消手势回调。我的建议肯定会正常工作,因为我们不会为任何视图设置负面标记