2012-08-28 2 views
16

UIButtonをサブクラス化して、クリックイベントを処理するロジックを含む「スマート」ボタンを作成しようとしています。クリックを処理するUIButtonをサブクラス化する

これを達成する最も良い方法は何ですか?私は単にonClickメソッドをオーバーライドする必要がありますか?または、イベントハンドラを登録する必要がありますか?もしそうなら、UIButtonを初期化する方法がたくさんあるので、どこでこれを行うべきですか?

+0

「クリックイベント」とは何ですか? – dandan78

+1

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

+0

@ dandan78クリックすると、私のボタンが何らかのアクションを実行するようにします。私はこのロジックをボタンの中に入れておきたい。もう少し詳しく説明するために、各ボタンがサウンドを再生するアプリケーションを作成しています。ボタンをクリックしたときに再生されるAVAudioPlayerのインスタンスも、それぞれのボタンでカプセル化したいと考えています。 –

答えて

31

私はあなたが提案したものよりも優れた解決策があると思いますUIButtonのサブクラスは、他のすべての人がタッチイベントを観察するのと同じ方法でタッチイベントを観察します。

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

重要な注意:あなたがinitinitWithFrame:を使用するように持って、あなたのボタンを作成する[UIButton buttonWithType:]を使用することはできません。 UIButtonに便利なイニシャライザがあるにもかかわらず、initWithFrame:はまだ指定されたイニシャライザです。

関連する問題