Я хотел бы выполнить действие, если кто-то касается предварительно объявленного UILabel, что-то вроде:
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 и установите его в качестве пользовательского внешнего вида, вы можете сделать его похожим на (однострочную) метку и реагировать на сенсорные события.
UIButton
Вы можете создать его подкласс и переопределить методы касания. Вы, вероятно, хотите переопределить touchesEnded:withEvent:.
touchesEnded:withEvent:
Или просто используйте кнопку UIB.
Просто добавьте категорию для класса UILabel и добавьте в нее свой метод.
Вы должны убедиться, что userinteractionenabled имеет значение YES, а затем вы можете переопределить touchesBegan:withEvent:
touchesBegan:withEvent: