誰かが事前に宣言されたUILabel
に触れた場合、次のようなアクションを実行したいと思います。
if (label is touched) {
my actions;
}
それを行う方法/方法はありますか?
ジェスチャレコグナイザを使用できます。
- (void)someSetupMethod {
// ...
label.userInteractionEnabled = YES;
UITapGestureRecognizer *tapGesture = \
[[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(didTapLabelWithGesture:)];
[label addGestureRecognizer:tapGesture];
[tapGesture release];
}
- (void)didTapLabelWithGesture:(UITapGestureRecognizer *)tapGesture {
// ...
}
デフォルトでは、UILabel
はタッチ入力を受け入れるように構成されていません。ただし、代わりにUIButton
を使用してカスタムの外観に設定すると、(単一行の)ラベルのように見せて、タッチイベントに応答させることができます。
サブクラス化して、touchメソッドをオーバーライドできます。おそらくtouchesEnded:withEvent:
をオーバーライドする必要があります。
または、UIButtonを使用します。
UserinteractionenabledがYESに設定されていることを確認する必要があります。そうすると、touchesBegan:withEvent:
をオーバーライドできます。
UILabelクラスのカテゴリを追加し、それにメソッドを追加するだけです。