Bezelボタンを作る[10]動作モードを追加する

2010年6月24日木曜日 | Published in | 0 コメント

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

[前回]Cocoaの日々: Bezelボタンを作る[09]ディゼーブル(無効)状態

前回までは押すと状態が変わるトグル動作だけだったが、今回は普通のプッシュボタンや表示を変えないモードを導入する。


動作モード


新たに 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

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