2012-03-16 53 views
7

Tôi đang tạo các nút theo chương trình. Tôi muốn thay đổi màu nền nút trong khi sờ lên bên trong một lần nữa nó phải thiết lập trở lại màu sắc bình thường của mình sau khi nâng lên ngón tay của chúng tôi .....Thay đổi màu nền UIButton

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]; 

// để thay đổi màu nền

-(void)changeButtonBackGroundColor:(id) sender 
{ 
    [nine setBackgroundColor:[UIColor redColor]]; 
} 

Tại đây changeBackgroundColor method được tạo ra để thay đổi màu sắc của nút đó. nó thay đổi màu sắc.

+0

"Chạm Up" là tương đương với nâng ngón tay của bạn. – dasdom

+1

Vậy ... câu hỏi chính xác là gì? Bạn đã viết phương pháp cho các hành động bạn đã đăng ký chưa? Nếu có, bạn có thể thêm mã đó không. – DBD

+0

Kiểm tra bài đăng này https://somethingaboutios.wordpress.com/2016/02/09/uibutton-backgroundcolor-for-uicontrolstateselected/ –

Trả lời

14

Không biết nếu điều này liên quan đến câu hỏi của bạn nhưng: này

[nine setBackgroundColor:[UIColor redColor]]; 

nên

[sender setBackgroundColor:[UIColor redColor]]; 

Edit: Thay đổi này

[nine addTarget:self action:@selector(changeButtonBackGroundColor:) forControlEvents:UIControlEventTouchUpInside]; 

để

[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]; 

và thêm phương pháp:

- (void)resetButtonBackGroundColor: (UIButton*)sender { 
    [sender setBackgroundColor:[UIColor cyanColor]]; 
} 
+0

Phương pháp này gây ra thay đổi màu sắc nhưng không quay lại màu lục lam sau khi nhấc ngón tay lên – Karthikeya

+0

Cả hai tác phẩm giống như – Karthikeya

+0

Đã chỉnh sửa câu trả lời của tôi. – dasdom

2

Tôi nghĩ rằng bạn có hai lựa chọn ..

Đầu tiên:

Bạn có thể đặt các setBackgroundColor [chín: [UIColor redColor] ]; bên trong "clickDigit" (và như dasdom nói rename để gửi và thay đổi (UIButton *) người gửi) ..

Thay đổi

[nine addTarget:self action:@selector(changeButtonBackGroundColor:) forControlEvents:UIControlEventTouchUpInside]; 

để

[nine addTarget:self action:@selector(changeButtonBackGroundColor:) forControlEvents:UIControlEventTouchUpOutside]; 

và phương pháp "changeButtonBackGroundColor"

[sender setBackgroundColor:[UIColor cyanColor]]; 

Thứ hai

tạo UIControlEvents phổ

[nine addTarget:self action:@selector(changeButtonBackGroundColor:) forControlEvents:UIControlEventAllEvents]; 

-(void)changeButtonBackGroundColor:(UIButton*) sender{ 
if ([sender.backgroundColor isEqual:[UIColor redColor]]){ 
    [sender setBackgroundColor:[UIColor cyanColor]]; 
}else{ 
    [sender setBackgroundColor:[UIColor redColor]];   
}} 

Tôi không thử mã này

Các vấn đề liên quan