20

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

if (label is touched) {
    my actions;
}

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

4

5 に答える 5

50

ジェスチャ認識機能を使用できます。

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

- (void)didTapLabelWithGesture:(UITapGestureRecognizer *)tapGesture {
    // ...
}
于 2011-06-12T21:32:41.507 に答える
12

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

于 2011-06-12T21:21:58.017 に答える
3

それをサブクラス化し、タッチ メソッドをオーバーライドできます。おそらくオーバーライドしたいでしょうtouchesEnded:withEvent:

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

于 2011-06-12T21:36:06.503 に答える
0

userinteractionenabled が YES に設定されていることを確認する必要があります。touchesBegan:withEvent:

于 2011-06-12T21:22:31.980 に答える
0

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

于 2017-04-21T09:11:30.900 に答える