将子视图添加到UIView后,按钮无法单击

时间:2011-10-25 23:17:13

标签: objective-c ios uiview uibutton

我创建了一个名为UICustomButton的类,它是UIView的子类。我将UIButton添加到UIView作为subview,如下面的代码所示:

-(id)initWithButtonType:(NSString *)type
{
    self = [super init];
    if (self) 
    {
        self.customButton = [self setupButtonWithTitle:type andFrame:frame];
        [self addSubview:self.customButton];
        self.customButton addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];

    }
    return self;
}

我面临的问题是,虽然按钮出现,但它们不可点击。我将按钮添加到UIView的方式有什么问题吗?

enter image description here

编辑:要添加,我将这个自定义按钮类实例用于单元格:

UICustomButton *customButton = [[UICustomButton alloc]initWithFrame:someFrame];
[cell.contentView addSubView:customButton];

6 个答案:

答案 0 :(得分:8)

检查UICustomButton对象的框架,以及self.customButton是否超出其superView

答案 1 :(得分:2)

确保子视图的框架位于其超视图的框架内。我遇到了两次问题,两次都看不到子视图的框架。

答案 2 :(得分:0)

您应该检查是否所有属性userInteractionEnabled都已启用:

  1. 检查显示此视图的单元格的UITableView的属性
  2. 检查将此视图添加为子视图的UITableViewCell的属性
  3. 检查UICustomButton
  4. 的属性
  5. 检查customButton
  6. -(id)initWithButtonType:(NSString *)type的属性

答案 3 :(得分:0)

我的按钮无效,因为我有两个视图。如您所见,第一个视图的宽度和高度为0像素。我已将此视图的大小设置为与view2相同,然后我的按钮可以点击。

    UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(325, 346, 0, 0)];
    view1.alpha = 0.90;

    UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 450, 150)];
    [view2.layer setCornerRadius:10.0f];
    view2.backgroundColor = [UIColor whiteColor];

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [btn addTarget:self action:@selector(addClosedToCollection) forControlEvents:UIControlEventTouchUpInside];
    [btn setFrame:CGRectMake(30, 30, 300, 32)];
    [btn setTitle:@"i'm a button" forState:UIControlStateNormal];

    [view2 addSubview:btn];
    [view1 addSubview:view2];

我希望我能帮助别人:)

答案 4 :(得分:0)

您的外部视图的高度可能为0.添加约束使其与子视图的高度相同(或高于),或者使用足够大的框架创建它。

答案 5 :(得分:-1)

尝试将其放在if语句之后:

self.isTouchEnabled = YES;