Есть ли сенсорный метод для UILabel? - PullRequest
19 голосов
/ 13 июня 2011

Я хотел бы выполнить действие, если кто-то касается предварительно объявленного UILabel, что-то вроде:

if (label is touched) {
    my actions;
}

Есть ли способ / способ сделать это?

Ответы [ 5 ]

47 голосов
/ 13 июня 2011

Вы можете использовать распознаватель жестов:

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

- (void)didTapLabelWithGesture:(UITapGestureRecognizer *)tapGesture {
    // ...
}
12 голосов
/ 13 июня 2011

По умолчанию UILabel не настроен на прием сенсорного ввода.Однако, если вместо этого вы используете UIButton и установите его в качестве пользовательского внешнего вида, вы можете сделать его похожим на (однострочную) метку и реагировать на сенсорные события.

3 голосов
/ 13 июня 2011

Вы можете создать его подкласс и переопределить методы касания. Вы, вероятно, хотите переопределить touchesEnded:withEvent:.

Или просто используйте кнопку UIB.

0 голосов
/ 21 апреля 2017

Просто добавьте категорию для класса UILabel и добавьте в нее свой метод.

0 голосов
/ 13 июня 2011

Вы должны убедиться, что userinteractionenabled имеет значение YES, а затем вы можете переопределить touchesBegan:withEvent:

...