Takahiro Octopress Blog

-1から始める情弱プログラミング

UIButtonのaddTargetについて

UIButtonをタップしたときの処理を書くときの注意点

今日は簡単なメモを書きます。ネイティブアプリを開発するときに、レイアウトをこりたいと思うことがあります。そんなときにひっかかってしまったことを書きます。(まさか今更こんなことにひっかかるとは…と思いました笑)

UIButtonは下記のように作成します。

1
2
3
4
UIButton *btn = [UIButton buttonWithType: UIButtonTypeRoudedRect];
btn.frame = CGRectMake(0, 0, 100, 30);
[btn setTitle:@"ボタン" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(test:) forControlEvents:UIControlEventTouchDown];

で、このボタンをUILabelに配置するために

1
2
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 50)];
[label addSubview: btn];

と書いたところ、addTargetで設定したタップイベントが実行されませんでした。
これを

1
2
 UIView *uv = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 50)];
[uv addSubview: btn];

UIViewに変えたところ、うまくいきました。

ま、UILabelをあえて使う必要もないので、UIViewで良いでしょう。

Comments