UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTapTap:)];
[self.view1 addGestureRecognizer:tapGesture];
[self.view2 addGestureRecognizer:tapGesture];
[tapGesture release];
Dans le code ci-dessus, seuls les appuis sur view2
sont reconnus. Si je commente la troisième ligne, les tapotements sur view1
sont reconnus. Si j'ai raison et que vous ne pouvez utiliser qu'une seule fois un identificateur de mouvement, je ne sais pas s'il s'agit d'un bogue ou s'il a juste besoin de plus de documentation.
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didPressed:)]; [self.view1 addGestureRecognizer:tapRecognizer]; [self.view2 addGestureRecognizer:tapRecognizer];
La vue de sortie1 n'a pas de tableau de reconnaissance de mouvements; view2 a un tableau de reconnaissance des gestesJe l'ai contourné en utilisant ce qui suit.
Ensuite, dans ma méthode handleLongPress, je viens de définir un UIButton égal à la vue de la reconnaissance des gestes et branchez ce que je fais en fonction de ce bouton
la source
Pour Swift 3 au cas où quelqu'un l'exigerait: Basé sur la réponse de Bhavik Rathod ci-dessus.
la source
getGestureRecognize
parce que c'est ce que fait cette fonctionNous pouvons faire quelque chose comme ça, c'est facile et simple
1) créer une fonction comme ci-dessous dans votre contrôleur (cette fonction renverra GestureRecognizer)
2) définissez maintenant ce module de reconnaissance dans plusieurs vues
la source
setNumberOfTapsRequired:1
n'est pas nécessaireNon, vous ne devez pas attacher de reconnaissance de gestes à plusieurs vues.
Il y a ces informations explicites dans la documentation Apple:
Guide de gestion des événements pour iOS - Gesture Recognizers Apple Developer Library
Alors que d'autres mentionnent qu'ils pourraient fonctionner dans certains cas, cela est clairement contraire à la documentation et pourrait changer dans n'importe quelle future version d'iOS.
Ce que vous pouvez faire, c'est ajouter des reconnaisseurs de gestes distincts aux vues que vous souhaitez surveiller et ils peuvent partager une action commune.
la source
Eh bien, si quelqu'un ne veut pas coder pour ajouter une vue gestuelle pour plusieurs boutons, comme kwalker a répondu ci-dessus, et souhaite le faire via Interface Builder, cela peut vous aider.
1) Vous pouvez ajouter la reconnaissance des gestes de pression longue à partir de la bibliothèque d'objets comme vous ajoutez d'autres objets comme les boutons UIB et les étiquettes UIL.
Au départ, ce que j'ai fini par utiliser, c'est que je n'en ai pris qu'un
2) Définissez les sorties de référence
UIButton
et les actions envoyées avec le propriétaire du fichier.la source
si vous avez une vue fixe, je vous suggère de faire quelque chose comme ça
de cette façon réduira plusieurs variables inutiles différentes
la source
Vous pouvez créer une extension générique en vue pour ajouter facilement des reconnaisseurs de gestes. Ceci est juste un exemple mais cela pourrait ressembler à ceci
Pour ajouter un module de reconnaissance à 2 touches sur une vue, vous devez simplement appeler:
Vous pouvez également ajouter facilement un identificateur de balayage
etc. N'oubliez pas que la cible doit être liée au sélecteur.
la source
Remplacer la classe par '
<UIScrollViewDelegate>
'Et utilisez cette méthode dans la classe .m:
Cette méthode vous aidera à activer plusieurs balayages sur une seule vue.
la source
Qu'en est-il de réécrire (recréer) votre GestureRecognize chaque fois que vous ajoutez un identificateur de geste pointant vers la même fonction. Dans le cas ci-dessous, cela fonctionne. J'utilise IBOutletCollection
Swift 2:
la source
Vous pouvez le faire en utilisant ce code mes vues qui sont des vues d'image dans le xib.
la source
500
à toutes les balises de vos vues, puis de soustraire500
? Pourquoi ne pas simplement commencer vos tags à1
(ou même0
) au lieu de501
?1
son, j'ai copié ce code depuis mon application d'où je le donne501
. Mais oui, ne donnez pas à0
bcoz que j'ai lu quelque part que cela indique toujours la vue des parents, donc cela créera des complications, croyez-moi, je l'ai fait face.