前回までは押すと状態が変わるトグル動作だけだったが、今回は普通のプッシュボタンや表示を変えないモードを導入する。
動作モード
新たに modeプロパティを設けて3つのモードを追加する。
enum { kBezelButtonModeNormal, kBezelButtonModeToggle, kBezelButtonModeFixed }; @interface BezelButton : UIControl { : NSInteger mode_; } : @property (nonatomic, assign) NSInteger mode;
- kBezelButtonModeNormal は押すと引込み、離すと元に戻るモード
- kBezelButtonModeToggle は押すと状態が替り、その後離しても元に戻らないモード
- kBezelButtonModeFixed は押しても表示が変わらないモード(イベントは取れる)
今回ソースコードは割愛する(後日ソースは公開予定)。
利用側のコードはこんな感じ。
CGRect frame = CGRectMake(100, 100, 64, 64); BezelButton* button = [[BezelButton alloc] initWithFrame:frame]; [button addTarget:self action:@selector(touched:) forControlEvents:UIControlEventTouchUpInside]; button.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"button100x100" ofType:@"png"]]; button.innerColor = [UIColor whiteColor]; button.enabled = YES; button.mode = kBezelButtonModeNormal;
[実行例]
kBezelButtonModeNormal
初期状態押すと引込み
離すと元に戻る
kBezelButtonModeToggle
初期状態(これは recessed プロパティで変えられる)押して
離すと引っ込んだまま
kBezelButtonModeFixed
初期状態(これは recessed プロパティで変えられる)押しても何も起こらない
Responses
Leave a Response