Câu trả lời:
Nút của bạn phải được buttonType
đặt thành Tùy chỉnh.
Trong IB bạn có thể bỏ chọn "Highlight điều chỉnh hình ảnh".
Lập trình bạn có thể sử dụng theButton.adjustsImageWhenHighlighted = NO;
Các tùy chọn tương tự cũng có sẵn cho trạng thái "bị vô hiệu hóa".
Ngoài câu trả lời ở trên về việc bỏ chọn "tô sáng điều chỉnh hình ảnh" trong IB, hãy đảm bảo rằng loại nút được đặt TÙY CHỈNH.
Điều này sẽ làm việc cho bạn:
[button setBackgroundImage:[UIImage imageNamed:@"button_image"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected | UIControlStateHighlighted];
Dòng thứ 3 là mẹo ở đây ...
Điều này hoạt động tương tự để thiết lập hình ảnh / hình nền
adjustsImageWhenHighlighted
thuộc tính của UIButton
dường như chỉ ảnh hưởng đến hình ảnh nền.
Tùy thuộc vào những thay đổi từ trạng thái mặc định sang trạng thái được tô sáng của nút, bạn có thể gọi một vài phương thức để đặt chúng thành những gì bạn cần. Vì vậy, nếu hình ảnh thay đổi, bạn có thể làm
[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted];
Nếu văn bản thay đổi, bạn có thể làm
[myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
các chức năng tương tự khác:
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state
- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state
OK đây là một giải pháp dễ dàng nếu điều này hiệu quả với bạn, sau một tuần đập đầu vào nó, cuối cùng tôi cũng chỉ cần đặt tô sáng = KHÔNG cho dòng đầu tiên của phương pháp IBAction cho TouchUpInside hoặc TouchDown, hoặc bất cứ điều gì hoạt động. Đối với tôi nó là tốt trên TouchUpInside.
-(IBAction)selfDismiss:(id)sender {
self.btnImage.highlighted = NO;
NSLog(@"selfDismiss");
etc, etc, etc.
}
Dành cho nhà phát triển Swifty -
yourButton.adjustsImageWhenHighlighted = false
Swift 3+
button.adjustsImageWhenHighlighted = false
button.adjustsImageWhenDisabled = false