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で良いでしょう。