Penso che ci siano soluzioni migliori a questo problema rispetto a quello che hai proposto , ma per rispondere direttamente alla domanda: una sottoclasse di UIButton osserva gli eventi di tocco nello stesso modo in cui tutti gli altri osservano gli eventi di tocco.
// 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
}
Nota importante: non è possibile utilizzare [UIButton buttonWithType:]
per creare il pulsante, hai avuto modo di utilizzare init
o initWithFrame:
. Anche se UIButton ha l'inizializzatore di convenienza, initWithFrame:
è ancora l'inizializzatore designato.
Cosa intendete per "evento clic"? – dandan78
http://stackoverflow.com/search?q=%2Bsubclass+%2Buibutton&submit=search – vikingosegundo
@ dandan78 Voglio che il mio pulsante esegua un'azione quando viene fatto clic. Voglio che questa logica sia contenuta nel mio pulsante. Per fornire ulteriori dettagli, creo un'applicazione in cui ogni pulsante riproduce un suono, quindi voglio che ciascuno dei miei pulsanti incapsuli un'istanza di AVAudioPlayer, che dovrebbe essere riprodotta quando si fa clic sul pulsante. –