2012-08-28 42 views
16

Tôi đang cố gắng phân lớp UIButton để tạo nút "thông minh hơn" chứa logic để xử lý sự kiện nhấp chuột.Phân lớp UIButton để xử lý các nhấp chuột

Cách tốt nhất để đạt được điều này là gì? Tôi chỉ cần ghi đè phương thức onClick? Hoặc tôi có cần phải đăng ký một trình xử lý sự kiện (và nếu vậy, nơi này nên được thực hiện nhìn thấy như có nhiều cách để bắt đầu một UIButton?)

+0

Ý của bạn là gì với 'sự kiện nhấp chuột'? – dandan78

+1

http://stackoverflow.com/search?q=%2Bsubclass+%2Buibutton&submit=search – vikingosegundo

+0

@ dandan78 Tôi muốn nút của mình thực hiện một số hành động khi được nhấp. Tôi muốn logic này được chứa bên trong nút của tôi. Để cung cấp chi tiết hơn một chút, tôi đang tạo một ứng dụng trong đó mỗi nút phát một âm thanh - vì vậy tôi muốn mỗi nút của tôi cũng đóng gói một phiên bản của AVAudioPlayer, sẽ phát khi nút được nhấp. –

Trả lời

31

Tôi nghĩ rằng có những giải pháp tốt hơn cho vấn đề này hơn những gì bạn đã đề xuất , nhưng để trả lời câu hỏi của bạn trực tiếp: Một lớp con của UIButton quan sát các sự kiện liên lạc giống như cách mọi người khác quan sát các sự kiện chạm.

// In your UIButton subclass 

- (instancetype)initWithFrame:(CGRect)frame { 
    self = [super buttonWithType:UIButtonTypeCustom]; 
    if (self) { 
     [self addTarget:self action:@selector(didTouchButton) forControlEvents:UIControlEventTouchUpInside]; 
    } 
    return self; 
} 

- (void)didTouchButton { 
    // do whatever you need to do here 
} 

Lưu ý quan trọng: bạn không thể sử dụng [UIButton buttonWithType:] để tạo nút bấm của bạn, bạn phải sử dụng init hoặc initWithFrame:. Mặc dù UIButton có bộ khởi tạo thuận tiện, initWithFrame: vẫn là trình khởi tạo được chỉ định.

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