Geste de reconnaissance ne fonctionne pas pour une raison quelconque, sur l'iphone
C'est dans un UILabel sous-classe que j'ai fait, mais il ne semble pas fonctionner. Il n'appelle pas la "tappedOn" pour une raison quelconque.
gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tappedOn)];
[self addGestureRecognizer:gesture];
[self setUserInteractionEnabled:YES];
Savez-vous pourquoi il pourrait être?
Ici est la tappedOn méthode:
-(void)tappedOn
{
NSLog(@"tapped");
if ([self.type isEqualToString: @"load"])
{
[self.manager.manager loadSavedGameInRow:self.name];
}
if ([self.type isEqualToString: @"save"])
{
[self.manager.manager saveGameInRow:self.name];
}
}
Peut-être ce morceau de ligne en l'absence de auto.UserInteractionEnabled=TRUE en vous code.
Mettre un point d'arrêt et vérifiez si votre méthode de tappedOn est appelée ou non.
voulez-vous dire userInteractionEnable? J'ai essayé de changer le mien pour VRAI, mais il ne fonctionne pas.
J'ai essayé le point d'arrêt, mais il n'a pas y arriver.
Votre méthode n'est pas appelée?
Mettre un point d'arrêt et vérifiez si votre méthode de tappedOn est appelée ou non.
voulez-vous dire userInteractionEnable? J'ai essayé de changer le mien pour VRAI, mais il ne fonctionne pas.
J'ai essayé le point d'arrêt, mais il n'a pas y arriver.
Votre méthode n'est pas appelée?
OriginalL'auteur Horton Jackson | 2013-09-20
Vous devez vous connecter pour publier un commentaire.
Pour moi cela fonctionne:
d'abord définir ce :
[self setUserInteractionEnabled:YES];
alors:
OriginalL'auteur Irfa
J'ai essayé ce code pour mon projet et sa fonctionne très bien pour moi.
A vous de définir votre méthode de la façon dont j'ai posté? Maintenant, mettez un point d'arrêt et vérifier. votre Méthode sera certainement appelée.
je l'ai essayé mais cela ne fonctionne pas pour une raison quelconque. c'est tellement étrange
Avez-vous défini un délégué dans votre .h fichier? Vous devez définir que. regardez si vous êtes absente.
IBAction
juste expose une méthode d'Interface Builder vous pouvez donc vous connecter à un contrôle. Je crois que sinon, c'est équivalent àvoid
.OriginalL'auteur Manthan
En dehors de la chance que votre étiquette est en dehors des limites de son superview, toucher la manipulation ne sera probablement pas. Valeur d'un chèque, depuis votre geste de reconnaissance de code semble correct.
Plus qu'une chose à essayer: êtes-vous sûr que votre code pour ajouter le geste de reconnaissance de la vue est en cours d'exécution? Quelle méthode êtes-vous en quand vous l'appelez?
OriginalL'auteur Zev Eisenberg
J'ai trouvé un bon exemple pour vous: stackoverflow lien
OriginalL'auteur incmiko
Essayez ceci:
Je utiliser Swift parce que je ne suis pas familier avec ObjC. Retour
true
est garanti pour permettre la reconnaissance simultanée.Parfois, vous souhaiterez peut-être définir tup certaines contraintes pour éviter les conflits, comme:
OriginalL'auteur billphilip22
Ajouter votre méthode comme ceci
Essayer celui-ci
ce qui' s'problème exact
Cela ne fonctionne pas, parce que si vous avez une méthode avec un paramètre, doit avoir ":" à la fin de la sélection. action:@selector(tappedOn:). (void)tappedOn:(UITapGestureRecognizer*)de l'expéditeur méthode a un paramètre: (UITapGestureRecognizer*)de l'expéditeur
Cela a fonctionné pour moi. J'ai eu le même gabarit, j'ai aussi ajouté le UIGestureRecognizerDelegate, mais je ne pense pas que ce serait faire beaucoup de différence. Le problème pour moi est que mon objet n'ont pas le userInteractionEnabled définie sur true.
OriginalL'auteur Jitendra
Semble que ça devrait être dans l'ordre... mais avez-vous oublié votre type en face de "geste"? Voir ci-dessous, et de constater l' UITapGestureRecognizer avant votre code:
Pour plus d'infos, voir cette réponse sur la façon de créer une étiquette cliquable.
OriginalL'auteur siege_Perilous
Ne sais pas si cela aide, mais pour recevoir les événements tactiles utilisez exclusivement
setExclusiveTouch
:Si vous regardez à la mise en œuvre de la méthode en question, il est de coutume de méthode sans paramètre. Mais ayant ":" après sélecteur est nécessaire en général pour GestureRecognizer. De toute façon mon accent a été mis sur setExclusiveTouch:
OriginalL'auteur βhargavḯ
Il devrait fonctionner. Il semble que vous avez ajouté le geste à l'intérieur de la sous-classe d'étiquette de code. Êtes-vous sûr de mettre dans les deux initWithFrame: et initWithCoder: méthodes? parce que les deux inits pourrait être appelée de façon indépendante fondée sur le fait que vous instanciez l'étiquette à l'aide d'un XIB, ou par programmation.
Exemple:
OriginalL'auteur viggio24
J'ai eu le même problème frustrant - la solution était de s'assurer que le parent vues de votre point de vue aussi ont leur "interaction de l'Utilisateur activé" propriété est définie sur true. Vous pouvez définir que par le biais de l'IB sous "Affichage" => "l'Interaction".
OriginalL'auteur ArturT