Problème UITapGestureRecognizer dans iOS 9

Je les gars,

Aujourd'hui, j'ai mis à jour mon iPhone vers iOS 9 et j'ai maintenant des problèmes avec un système de reconnaissance de gestes. C'est l'erreur:

ATTENTION: Un programme de reconnaissance de gestes (; target = <(action = onVideoTap :, target =) >>) a été installé dans un storyboard / xib pour être ajouté à plus d'une vue (->; layer =>) à la fois, n'a jamais été autorisé et est maintenant appliqué. À partir d'iOS 9.0, il sera placé dans la première vue dans laquelle il est chargé.

Je n'ai pas eu ce problème avec iOS8. La vue contient un UIImageView et un TextView. Le module de reconnaissance a été placé dans ImageView et n'a que des points de vente de reference dans cette vue.

Je ne comprends pas vraiment ce problème. Quelqu'un peut-il m'aider? Je vous remercie 🙂

Je pense que ce problème se produit lorsque vous utilisez le storyboard ajouté un reconnaisseur de gestes. Pour certaines raisons, vous avez ajouté plus d'une vue (voir l'image).

entrez la description de l'image ici

Donc, supprimez les autres vues erronées, laissez la bonne vue.

entrez la description de l'image ici

Cela arrivait avec moi parce que je voulais utiliser un geste de reconnaissance de geste avec une image dans un TableViewCell contenue dans un TableView .

Le problème est que:

J'ajoute un reconnaisseur de gestes, mais j'ai plus d'une TableViewCell (plus d'une image) dans ma table.

iOS affectera l' UITapGestureRecognizer à la première image de la première cellule, et les autres cellules seront sans gestes (le geste est déjà défini sur la première image uniquement).

Pour résoudre ce problème, procédez comme suit:

  1. Assurez-vous de cocher User Interaction Enabled pour l' UIView vous souhaitez atsortingbuer avec un TapRecognizerGesture .
  2. dans la sous-vue TableViewCell dans mon cas, ajoutez un nouveau UITapGestureRecognizer . Le code:

     internal let tapRecognizer1: UITapGestureRecognizer = UITapGestureRecognizer()` 
  3. Dans votre vue principale TableView dans mon cas et pour chaque cellule affecter l' UITapGestureRecognizer vous avez fait avec chaque cellule à une fonction principale dans la vue principale:

     cell.tapRecognizer1.addTarget(self, action: "img_Click:") cell.img.gestureRecognizers = [] cell.img.gestureRecognizers!.append(cell.tapRecognizer1) 
  4. Ajoutez la fonction que vous souhaitez que UITapGestureRecognizer triggers lorsque vous cliquez dessus:

     func img_Click(sender: UITapGestureRecognizer) { print("ok") } 

Remarques:

  • Vous pouvez utiliser de manière simple si vous ne voulez pas l'action UITapGestureRecognizer dans la vue principale en l'affectant directement dans sa sous-vue.
  • à l'étape 4, le nom de la fonction doit être le même que dans la ligne addTarget .

Déjà fixé. Le storyboard est localisé et dans une langue, j'ai assigné deux fois le reconnaisseur à l'image. D'une manière ou d'une autre, cela a semblé causer des problèmes sur les autres storyboards aussi.