タッチして 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