Bezelボタンを作る[05]タッチしてon/offを切り替える

2010年6月19日土曜日 | Published in | 0 コメント

このエントリーをはてなブックマークに追加

[前回]

タッチして on/offを切り替える処理を加える。

Bezelボタンクラス


BezelButtonクラスを作る。ボタンを実装するにあたっては UIButton ではなく、UIControl のサブクラスを使う。

@interface BezelButton : UIControl {

 BOOL recessed_;
}
@property (nonatomic, assign) BOOL recessed;

@end

プロパティ recessed は、ボタンの状態を表し、YESの場合 reccesed(凹んだ)状態、NOの場合は浮き出た状態を表す。このプロパティを見て(前回までの)描画を切り替える。


UIControlのイベント処理


UIControlのサブクラスでイベントを処理する場合、beginTrackingWithTouch:withEvent:, continueTrackingWithTouch:withEvent:, endTrackingWithTouch:withEvent: をオーバライドする。今回は単純に endTrackingWithTouch:withEvent: をオーバライドして、このタイミングで recessed を切り替える。
- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
{
 self.recessed = !self.recessed;
 [self setNeedsDisplay];
 
 [super endTrackingWithTouch:touch withEvent:event];
}

実行してみよう。

初期状態は凹んだ状態。

タッチアップすると浮き出た状態になる。

以後、この繰り返し。

Responses

Leave a Response

人気の投稿(過去 30日間)