Làm cách nào để tắt trạng thái điều khiển tô sáng của UIButton?


147

Tôi đã có một UIButton, khi được chọn, không nên thay đổi trạng thái khi bị chạm. Hành vi mặc định dành cho nó là trong UIControlStateHighlighted trong khi bị chạm vào và điều này khiến tôi tức giận.

Gợi ý?

Câu trả lời:


313

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".


1
Bất kỳ cơ hội nào bạn biết phiên bản lập trình này sẽ là gì? Ngay bây giờ tôi đã làm cho nó hoạt động một cách nhanh chóng bằng cách làm cho nó bị vô hiệu hóa và mặc nó như được chọn.
kbanman

99
uibutton.adjustImageWhenHighlighted = NO;
Haydn

43
Đồng thời đảm bảo loại nút được đặt thành TÙY CHỈNH. (Như Mosib Asad đã đề cập trong câu trả lời khác)
Vlad Lego

Tuyệt quá!!! chỉ là một thay đổi nhỏ và rõ ràng mà tôi đã bỏ lỡ !!! Tôi đã đặt loại lớp UIButton thành MyCustomClass nhưng không thể thay đổi loại này. Vì vậy, nó đã cho hiệu ứng nổi bật không được chọn nút. Cảm ơn bạn một lần nữa.
Vinod Supnekar

38

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.


2
Đây là phần còn thiếu: loại nút TÙY CHỈNH. Thanx!
JOM

1
Điều gì xảy ra nếu tôi muốn giữ làm UIButton hệ thống? Tôi không thể loại bỏ hình ảnh điều chỉnh nổi bật?
Amjad Husseini

36

Đ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


1
Điều này làm việc hoàn hảo cho tôi. Các adjustsImageWhenHighlightedthuộc tính của UIButtondường như chỉ ảnh hưởng đến hình ảnh nền.
Michael Thiel

Xin lưu ý rằng nếu quyết định gán hình ảnh cho 'trạng thái bị vô hiệu hóa', bạn không gọi setBackgroundImage. Thay vào đó, bạn nên thực hiện [nút setImage: image forState: UIControlStateDisables]; Cũng cần lưu ý rằng, như được đề cập trong chủ đề này, thuộc tính UIButton điều chỉnhImageWhenHighlighted chỉ ảnh hưởng đến hình nền.
HamasN


23
button.adjustsImageWhenDisabled = NO;

cũng hữu ích không kém khi có nút xuất hiện của riêng bạn.


5

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


setTitleColor là tất cả những gì tôi cần để tắt tính năng tô sáng trên văn bản của
uibutton

3

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.

}


3

Swift 3+

button.adjustsImageWhenHighlighted = false

button.adjustsImageWhenDisabled = false

2

chỉ hai điều:

UIButton *btnTransparentComponent = [UIButton buttonWithType:UIButtonTypeCustom];
btnTransparentComponent.adjustsImageWhenHighlighted = NO;

2

Tôi gặp vấn đề tương tự và thấy rằng "bỏ chọn" Xóa nội dung đồ họa trong trình tạo giao diện đã khắc phục sự cố của tôi

nhập mô tả hình ảnh ở đây


2

làm cho nút của bạn Loại - "Tùy chỉnh" và Bỏ chọn - Điều chỉnh hình ảnh nổi bật và bạn đã hoàn tất.


-3

tránh để đặt Line Break của UIButton thành Clip , thay vào đó hãy sử dụng Truncate Middle tiêu chuẩn

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.