Вопрос

Я хотел бы сделать действие, если кто -то затронет предшественник 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 Вместо этого и установите его на индивидуальный вид, вы можете сделать его похожим на (однострочную) метку и попросить его ответить на события прикосновения.

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

Или просто используйте Uibutton.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top