在外面点击时从另一个子视图中删除子视图

时间:2013-03-17 15:21:22

标签: iphone ios xcode touches

我正在尝试构建我的第一个iphone应用程序,请帮我解决这个问题!!我将我的scrollview作为我的控制器视图的子视图,并且一些控件(如标签,按钮,文本字段和tableview)已作为子视图放置到此滚动视图中。现在,当我点击按钮时,我的表格视图变得可见,但是当我在桌面视图之外点击时我不能忽略这个桌面视图(我的意思是在滚动视图上点击)。

下面是我的代码片段'我试图解雇我的tableview, 请帮助我!

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *aTouch = [touches anyObject];
    if (aTouch.tapCount == 1)
    {
        CGPoint p = [aTouch locationInView:self.scrollview];
        if (!CGRectContainsPoint(myTableView.frame, p))
        {
            myTableView.hidden = YES;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你把这个代码放在ViewController.m中,这样当你点击self.view时它就会激活。你的scrollView覆盖你的self.view以便动作不活动。

将您的scrollView子类化并在您的IB中选择类型,在YourScrollView.m中,添加以下代码:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *aTouch = [touches anyObject];
    if (aTouch.tapCount == 1)
    {
        CGPoint p = [aTouch locationInView:self];
        for (UIView *aView in self.subviews) {
            if (([aView isKindOfClass:[UITableView class]])&&(!CGRectContainsPoint(aView.frame, p)))
            {
                [aView setHidden:YES];
            }

        }
    }
}