在iphone中,当用户触摸子视图的superview时,如何实现关闭子视图?

在iphone中,当用户触摸子视图的superview时,如何实现关闭子视图?,iphone,ios,view,uiviewcontroller,subview,Iphone,Ios,View,Uiviewcontroller,Subview,我有一个视图控制器,我在同一个视图控制器中创建了另一个视图,并将其添加为子视图。当单击按钮时,子视图将出现,占据屏幕的一半。当用户触摸超级视图(背景中的主视图)时,如何关闭子视图?您可以使用手势识别器,在superview上的一次点击操作中,在子视图上调用removeFromSuperview 在viewDidLoad中添加如下内容: UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithT

我有一个视图控制器,我在同一个视图控制器中创建了另一个视图,并将其添加为子视图。当单击按钮时,子视图将出现,占据屏幕的一半。当用户触摸超级视图(背景中的主视图)时,如何关闭子视图?

您可以使用手势识别器,在superview上的一次点击操作中,在子视图上调用removeFromSuperview

在viewDidLoad中添加如下内容:

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];

    [singleTap setNumberOfTapsRequired:1];
    [mainView addGestureRecognizer:singleTap];
然后添加函数:

- (void) handleSingleTap: (id) sender
{

    [secondView removeFromSuperView];
}

要更好地控制何时删除子视图,可以覆盖mainViewController的responder方法,如下所示:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    [subview removeFromSuperView];
}

通过这种方式,您实际上可以看到用户在屏幕上点击的位置,并做出相应的响应。

我使用了这种方法,但当用户触摸子视图时,它也将从superview中删除。但我只想在用户触摸其主视图时删除子视图。我如何实现它?