web-dev-qa-db-ja.com

UILabelのタッチメソッドはありますか?

誰かが事前に宣言されたUILabelに触れた場合、次のようなアクションを実行したいと思います。

if (label is touched) {
    my actions;
}

それを行う方法/方法はありますか?

19
Matoe

ジェスチャレコグナイザを使用できます。

- (void)someSetupMethod {
    // ...
    label.userInteractionEnabled = YES;
    UITapGestureRecognizer *tapGesture = \
    [[UITapGestureRecognizer alloc]
     initWithTarget:self action:@selector(didTapLabelWithGesture:)];
    [label addGestureRecognizer:tapGesture];
    [tapGesture release];
}

- (void)didTapLabelWithGesture:(UITapGestureRecognizer *)tapGesture {
    // ...
}
47

デフォルトでは、UILabelはタッチ入力を受け入れるように構成されていません。ただし、代わりにUIButtonを使用してカスタムの外観に設定すると、(単一行の)ラベルのように見せて、タッチイベントに応答させることができます。

12

サブクラス化して、touchメソッドをオーバーライドできます。おそらくtouchesEnded:withEvent:をオーバーライドする必要があります。

または、UIButtonを使用します。

3
fzwo

UserinteractionenabledがYESに設定されていることを確認する必要があります。そうすると、touchesBegan:withEvent:をオーバーライドできます。

0
Ken Pespisa

UILabelクラスのカテゴリを追加し、それにメソッドを追加するだけです。

0
Roshanboy4u