添加多个子视图(> 4)时,UIButton会停止响应触摸

时间:2013-06-01 18:52:48

标签: ios objective-c ios5 ios6

我正在App中创建一个模态视图,其中包含多个子视图。这些子视图中的每一个都有一个按钮和与该按钮相关的动作。我使用循环将每个子视图插入到位。问题是前4个子视图都没问题,从第5个到最后一个没有响应。

这是与问题相关的简化代码:

Simplified SubviewView.m

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // More info button
        CGRect buttonFrame = CGRectMake(infoMarginLeft + infoWidthWithInfo, infoHeightControl, 25, 25);
        UIButton * button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        [button setFrame:buttonFrame];
        [button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
        [self addSubview:button];
    }
    return self;
}

-(void)buttonTapped:(id)sender
{
    NSLog(@"Button tapped!";
}

简化view.m

- (void)drawRect:(CGRect)rect
{ 
    for (int i = 0; i < 12; i++) {
        // Color info container
        SubviewView * miniView = [[SubviewView alloc] initWithFrame:CGRectMake(0, 20 * i, 15, 15)];
        miniColorView.backgroundColor = [UIColor clearColor];

        // Adding subview through array to keep track of objects
        [self addSubview:miniColorView];
    }
}

在此先感谢,我绝对不知道发生了什么:p

-

修改

刚刚发现它是什么!

父视图的屏幕高度为高度。问题是,一些子视图超出了屏幕高度限制。我所要做的只是增加父视图高度=)

1 个答案:

答案 0 :(得分:0)

我会检查以确保您没有在按钮顶部添加视图miniView。

此外,这应该移到drawRect之外,只需将它放在init方法中。

编辑:

将miniView的背景颜色设置为另一个除了清除之外的颜色,看看你是否仍然看到了你的按钮。如果没有,那么你掩盖了你的按钮,它将不会接收到触摸事件。