Question

Je voudrais faire une action si quelqu'un touche un UILabel prédéfinition, quelque chose comme:

if (label is touched) {
    my actions;
}

Y at-il une méthode / façon de le faire?

Était-ce utile?

La solution

Vous pouvez utiliser un geste de reconnaissance:

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

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

Autres conseils

Par défaut, UILabel est pas configuré pour accepter une entrée tactile. Toutefois, si vous utilisez un UIButton à la place et le mettre à avoir une apparence personnalisée, vous pouvez la faire ressembler à une étiquette (une seule ligne) et l'ont réagissent au toucher des événements.

Vous pouvez sous-classe et remplacer les méthodes tactiles. Vous voulez probablement override touchesEnded:withEvent:.

Ou tout simplement utiliser un UIButton.

Vous devez vous assurer userinteractionenabled est réglé sur OUI et vous pouvez remplacer le touchesBegan:withEvent:

Juste Ajouter une catégorie pour la classe UILabel et ajoutez votre méthode pour elle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top