2013-07-08 33 views
16

Làm cách nào để tắt hiệu ứng làm nổi bật nút khi nhấp? Có nút tùy chỉnh với màu bg trắng và màu văn bản DarkGray. Vấn đề là văn bản trở thành màu trắng khi nhấp vào nút. Đã cố gắng nhưng không ai trong số họ làm việc:Làm thế nào để vô hiệu hóa UIButton nổi bật trên nhấp chuột?

a. Bỏ chọn "Highlighted Ajusts Image" trong trình tạo giao diện.

b. Cài đặt cố định được đánh dấu = KHÔNG trong phương thức nhấn nút:

((UIButton *)sender).highlighted = NO 

c. Đã cố đặt cùng một tiêu đề cho trạng thái highlihted:

[button setTitle:[button titleForState:UIControlStateNormal] forState:UIControlStateHighlighted]; 

Mọi đề xuất?

+0

Bạn đang sử dụng cốt truyện. –

+0

khi bạn nói hiệu ứng nổi bật, nghĩa là văn bản thay đổi màu của nó? – Vame

+0

Bạn cũng đang sử dụng hình ảnh cho nút của mình? –

Trả lời

12

UIButton sẽ đánh dấu trên nhấp chuột, vì vậy kiểm tra thiết lập nút Thay đổi màu sắc tiêu đề trong nổi bật cấu hình nhà nước để giống như trạng thái mặc định Hoặc bạn có thể thiết lập:

[button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted]; 

Nếu bạn muốn kiểm soát Nổi bật bởi mã, bạn có thể tắt bình thường nhấn mạnh bởi lớp con Button và vô hiệu hóa trong touchesBegin:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    if (self.state == UIControlStateHighlighted) { 
     [self setHighlighted:NO]; 
    } 
} 
37

bạn cũng có thể làm cho UIButton loại: tùy chỉnh từ Storyboard

Custom button

Điều này sẽ loại bỏ mọi hành vi hệ thống cho bạn. (Tôi nghĩ)

+1

Điều này làm việc hoàn hảo cho tôi. – LandonSchropp

+3

Sau một số tìm kiếm tôi đã đưa ra câu trả lời của bạn. Thêm một khía cạnh quan trọng đã giải quyết được vấn đề của tôi: Loại = Hành vi hệ thống sẽ thêm hiệu ứng mờ dần vào hình nền và văn bản được đánh dấu. Chuyển sang Loại = Tùy chỉnh sẽ tắt hiệu ứng này sao cho chính xác màu được chỉ định sẽ được hiển thị. Cảm ơn! – Christian

+1

điều này không khi sử dụng hình ảnh – anders

2

Không ai trong số các giải pháp tôi tìm thấy trực tuyến làm việc cho tôi (bao gồm cả những người được liệt kê ở đây), vì vậy tôi đã kết thúc làm điều này trong tùy chỉnh của tôi UIButton lớp con:

// swift: 

override var isHighlighted: Bool { 
    didSet { if isHighlighted { isHighlighted = false } } 
} 

Tôi cũng có các buttonType thiết lập để .custom, nhưng nó có thể làm cho không có sự khác biệt ở đây.

Và bây giờ: không có hình ảnh nổi bật hoặc màu sắc kỳ lạ nào khác!

13

Đây là giải pháp cho các nút có hình ảnh. Trong bảng phân cảnh, có một thuộc tính được gọi là HighlightedAdjustsImage được Bật theo mặc định. Tắt tính năng đó và hình ảnh nút của bạn sẽ không hiển thị bất kỳ thuộc tính được đánh dấu nào.

+0

Hoàn hảo, @Rajeev! Hoạt động trong Xcode 8.2. –

5

câu trả lời cũ đã lỗi thời, và câu hỏi cũ, nhưng cách mới nhất và đơn giản nhất là:

overlayButton.adjustsImageWhenHighlighted = false 
1

My 2 cents;) Swift 3 sẵn sàng

class CustomButton: UIButton { 

    override var isHighlighted: Bool { 
     didSet { 
      if (isHighlighted) { 
       super.isHighlighted = false 
      } 
     } 
    } 

} 

Tình hình và Lịch sử

Tôi đã đặt hình ảnh cho UIControlState.normalUIControlState.selected, vì vậy, hãy đặt UIButton.isSelected = true hiển thị sele cted hình ảnh, khác hình ảnh bình thường.

Vấn đề chúng tôi phát hiện ra là khi UIButton.isSelected = true, và trong quá trình nổi bật/tập trung (bằng cách tap giữ nút và loại bỏ vòi bởi swiping đi) nút cho thấy hình ảnh cho UIControlState.normal, trông khá xấu xí với sếp của tôi: D

tôi đã thử nhiều giải pháp, chẳng hạn như UIButton(type: UIButtonType.custom)UIButton.adjustsImageWhenHighlighted = false, không ai giúp :(

1

Swift 4 với XCode 9

Chỉ cần bỏ chọn "Điều chỉnh nổi bật hình ảnh" và nếu bạn muốn xóa bỏ nền bị tắt, hãy bỏ chọn "Hình ảnh điều chỉnh bị tắt".

Đầu tiên đảm bảo loại nút của bạn là "Custom"

enter image description here

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