2011-10-26 28 views
8

Tôi đã tạo UIButton tùy chỉnh (lớp con UIButton) cho ứng dụng của mình. Trong quá trình thực hiện của nút này, làm thế nào tôi có thể thay đổi màu nền khi nó được nhấn? (Nó phải trở lại đó là nền bình thường khi chán nản. Tôi hiện đang sử dụng Core Graphics để vẽ một gradient background.)Phát hiện khi UIButton tùy chỉnh được nhấn

Tôi đã cố gắng phân nhánh trong drawRect: (kiểm tra cho self.selectedself.highlighted, nhưng không có sự thay đổi xảy ra vì drawRect không đang được kêu gọi sự kiện liên lạc.

Mọi góp ý hoặc các mẫu mã được đánh giá cao.

Trả lời

15

thử gọi [self setNeedsRedraw] trong trường hợp liên lạc của bạn.


Asker cung cấp giải pháp dựa trên câu trả lời này và các bình luận bên dưới.

Giải pháp

sử dụng:

[self addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchDown]; 
[self addTarget:self action:@selector(buttonDepressed) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside | UIControlEventTouchCancel]; 

Trường hợp selectors là chức năng tùy chỉnh mà thực hiện sự thay đổi nền.

+0

Tôi cần chụp sự kiện chạm này trong quá trình triển khai của nút để đặt màu nền. –

+2

Bạn luôn có thể tự thêm mình làm người nghe cho các sự kiện liên lạc của riêng bạn. Hãy thử '[self addTarget: self action: @selector (setNeedsRedraw) forControlEvents: UIControlEventTouchDown];' –

+1

Cảm ơn bạn. Sử dụng 'addTarget' trên' self' đã làm việc. Tôi đã thêm giải pháp thực tế của tôi vào câu trả lời của bạn. –

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