2011-10-26 19 views
8

私のアプリケーション用のカスタムUIButton(UIButtonサブクラス)を作成しました。このボタンの実装では、押されたときに背景色をどのように変更しますか?私はself.selectedself.highlightedをチェックする(drawRect:に分岐しようとしましたが、drawRectがされていないので、何ら変化は生じていないカスタムUIButtonが押されたときの検出

(それが押さとき、通常の背景だ。私は現在、グラデーションの背景を描画するコアグラフィックスを使用しています。に戻す必要があります)タッチイベントに呼ばれる。

任意の提案やコードサンプルが高く評価されています。

答えて

15

あなたのタッチイベントに[self setNeedsRedraw]を呼び出してみてください。


Askerはこの回答と以下のコメントに基づいて解決策を提示しました。

ソリューションに使用

:セレクタは、背景の変更を行うカスタム関数です

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

+0

背景の色を設定するために、ボタンの実装内でこのタッチイベントをキャプチャする必要があります。 –

+2

自分自身を自分のタッチイベントにリスナーとして追加することができます。 「自己addTarget:自己アクション:@セレクタ(setNeedsRedraw)forControlEvents:UIControlEventTouchDown」;「 –

+1

ありがとうございます。 'self'に' addTarget'を使用するとうまくいきました。あなたの答えに私の実際の解決策を加えました。 –

関連する問題