更改UIButton背景颜色

Kar*_*eya 7 objective-c

我正在以编程方式创建按钮.我想改变按钮背景颜色,同时再次触摸内部,它必须在抬起我的手指后恢复其通常的颜色.....

nine = [UIButton buttonWithType:UIButtonTypeCustom];
[nine setFrame:CGRectMake(15, 105, 65, 40)];
[nine setTitle:@"9" forState:UIControlStateNormal];
[nine setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[nine setBackgroundColor:[UIColor cyanColor]];
[nine addTarget:self action:@selector(clickDigit:) forControlEvents:UIControlEventTouchUpInside];
[nine addTarget:self action:@selector(changeButtonBackGroundColor:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:nine];
Run Code Online (Sandbox Code Playgroud)

//改变背景颜色

-(void)changeButtonBackGroundColor:(id) sender
{
    [nine setBackgroundColor:[UIColor redColor]];
}
Run Code Online (Sandbox Code Playgroud)

这里创建了changeBackgroundColor方法来改变该按钮的颜色.它改变了颜色.

das*_*dom 14

不知道这是否与你的问题有关,但是:这个

[nine setBackgroundColor:[UIColor redColor]];
Run Code Online (Sandbox Code Playgroud)

应该

[sender setBackgroundColor:[UIColor redColor]];
Run Code Online (Sandbox Code Playgroud)

编辑:更改此内容

[nine addTarget:self action:@selector(changeButtonBackGroundColor:) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

[nine addTarget:self action:@selector(changeButtonBackGroundColor:) forControlEvents:UIControlEventTouchDown];
[nine addTarget:self action:@selector(resetButtonBackGroundColor:) forControlEvents:UIControlEventTouchUpInside];
[nine addTarget:self action:@selector(resetButtonBackGroundColor:) forControlEvents:UIControlEventTouchUpOutside];
[nine addTarget:self action:@selector(resetButtonBackGroundColor:) forControlEvents:UIControlEventTouchCancel];
Run Code Online (Sandbox Code Playgroud)

并添加方法:

- (void)resetButtonBackGroundColor: (UIButton*)sender {
    [sender setBackgroundColor:[UIColor cyanColor]];
}
Run Code Online (Sandbox Code Playgroud)