2012-08-28 36 views
16

Tıklatma olayını işlemek için mantığı içeren "daha akıllı" bir düğme oluşturmak için UIButton alt sınıfını oluşturmaya çalışıyorum.Tıklamaları işlemek için UIButton altkümesi

Bunu başarmanın en iyi yolu nedir? Bir onClick yöntemini geçersiz kılmam mı gerekiyor? Veya bir olay işleyicisini kaydetmem gerekiyor mu (eğer varsa, bu UIButton'u başlatma konusunda birçok yol olduğu için nerede yapılmalıdır?)

+0

'Tıklama etkinliği' ile ne demek istiyorsunuz? – dandan78

+1

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

+0

@ dandan78 Düğmem tıklandığında bazı eylemleri gerçekleştirmesini istiyorum. Bu mantığın düğmemin içinde olmasını istiyorum. Biraz daha fazla ayrıntı sağlamak için, her bir düğmenin bir ses çaldığı bir uygulama oluşturuyorum - bu yüzden düğmemin her birinin düğmeyi tıklatıldığında çalması gereken bir AVAudioPlayer örneğini de kapsüllemek istiyorum. –

cevap

31

Bu sorunun çözüm önerilerinizden daha iyi çözümleri olduğunu düşünüyorum. Ancak, doğrudan sorunuzu yanıtlamak için: UIButton'un bir alt sınıfı, dokunma olaylarını, herkesin dokunma olaylarını gözlemlediği gibi gözlemlediğini gözlemler.

// 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 
} 

Önemli not: Eğer düğme oluşturmak için [UIButton buttonWithType:] kullanamaz, sen init veya initWithFrame: kullanmak zorundayız. UIButton kolaylık başlatıcısına sahip olsa da, initWithFrame: hala atanmış başlatıcıdır.