在iOS上以编程方式创建了一个按钮,但按下时没有任何操作

时间:2013-07-23 22:02:56

标签: ios uibutton

我创建了一个按钮,就像下面的代码一样,但它不会在日志中响应(应该显示“ha”)。最奇怪的部分是我能够在集合视图中使用这个确切的代码,但通常不在viewcontroller上。按下按钮“myAction”我做错了什么?

-(void)viewDidLoad {
    UIButton *buttonz = [UIButton buttonWithType:UIButtonTypeCustom];
        buttonz.frame = CGRectMake(160, 0, 160, 30);
        [buttonz setTitle:@"Charge" forState:UIControlStateNormal];
        [buttonz addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside];
        [buttonz setEnabled:YES];

        [buttonz setBackgroundColor:[UIColor blueColor]];

        //add the button to the view
        [backImageView addSubview:buttonz];
}

-(void)myAction:(id)sender {
NSLog(@"ha");
    [self resignFirstResponder];
    NSLog(@"ha");
}

2 个答案:

答案 0 :(得分:6)

1)

您无需在按钮上显示“resignFirstResponder”(似乎大部分时间我看到“resignFirstResponder”位于文本字段或文本视图中。)

2)

将控制事件从UIControlEventTouchUpInside更改为UIControlEventTouchDown

3)

父UIImageView可能没有将“userInteractionEnabled”设置为true,这意味着事件不会被传播(或发送到)子视图。

要使这些事件可用于子视图,请通过以下方式更改父视图的userInteractionEnabled属性:

backImageView.userInteractionEnabled = YES;

在添加该子视图之前。

答案 1 :(得分:1)

默认情况下,图像userInteractionEnabled处于禁用状态。因此,您必须通过backImageView.userInteractionEnabled = YES;

启用它