UIButton avec vue personnalisée - addTarget:action:forControlEvents: ne fonctionne pas
Mon bouton est comme suit
- Créé label1
- Créé label2
- Créé customView (
UIView
) - Ajouté label1 et label2 sur affichage personnalisé
- Créé myCustomButton(
UIButton
) - Ajouté customView sur myCustomButton
Je l'ai déjà fait userInteractionEnable pour custom_View, label1 et label2.
Ensuite ajouté
[myCustomButton addTarget:self action:@selector(OnButtonClick:) forControlEvents:UIControlEventTouchUpInside];
Et
-(void)OnButtonClick:(UIButton *)sender
{
}
Mais la fonction n'est jamais appelée, même lorsque je touche le bouton. Toute solution?
S'il vous plaît mettez votre code ici ?
OriginalL'auteur Sagrian | 2013-05-08
Vous devez vous connecter pour publier un commentaire.
Juste un problème mineur avec votre code mon ami, vous avez juste besoin d'ajouter une seule ligne suivante dans votre code, oublier de
setUserInteractionEnabled:NO
àUIView
il vous permettra de cliquer sur le boutonCliquez Sur La Méthode De
setUserInteractionEnabled
devrait PAS être? Je l'ai mis à oui, puis il a travaillé!oui, Parce que le bouton est ajouté dans
self.view
et les étiquettes sont enview
, c'est pourquoi si vous désactivez l'interaction de l'utilisateur. il ne fait aucune différence, en tant que bouton & les étiquettes sont dans des récipients différents.OriginalL'auteur Dipen Panchasara
Plutôt que de créer de la customView (une instance de UIView) , vous ajoutez customView comme une instance de UIControl comme aussi addTarget à la customView ,
Maintenant dans le CustomViewClicked Méthode
Espère que ça va vous aider.
OriginalL'auteur Gaurav Rastogi
Swift 4.2 Solution
C'est la solution du problème (basé sur les réponses précédentes) avec la dernière version de Swift:
Notes: la Désactivation de l'interaction de l'utilisateur de la
customView
est absolument nécessaire, car il est ajouté sur le dessus et éventuellement interférer avec le robinet geste que nous voulons capturer.Pour voir cela plus clairement, il suffit d'utiliser le "mode Débogage Hiérarchie" en cours de débogage:
OriginalL'auteur Alessandro Francucci