Je me retrouve face à un problème qui m’échappe.
J’ai créé un ‹ UITapGestureRecognizer › avec un selector pointant vers une fonction qui attend un paramètre.
Lorsque j’effectue le Tap et que le selector est appelé l’app crash en spécifiant -[UITapGestureRecognizer copyWithZone:]: unrecognized selector sent to instance
Je ne comprends pas pourquoi. La fonction est appelée ailleurs et fonctionne correctement.
Egalement, si j’enlève le paramètre demandé, le selector fait son boulot et l’app ne crash pas.
Je vous mets le code ci-dessous.
Si quelqu’un peu m’éclairer ?
Merci d’avance pour votre aide
Salut Sebastien,
en effet les target des gesture recognizers ne peuvent pas recevoir de paramètres à l’exception du GestureRecognizer lui-même.
Dans la doc officielle ils précisent que ta signature de fonction doit avoir un de ces 2 formes :
J’allais justement faire un update sur le sujet car depuis j’ai réussi à trouver une solution.
Alors effectivement il n’est pas possible de donner une valeur à un paramètre d’une fonction lors de l’appel de celle-ci dans un #selector.
Mais il est possible d’appeler une fonction qui attend un paramètre.
Cependant, et c’est là que se trouvait mon blocage, le paramètre en question doit avoir un type compatible avec Objective-C.
Dans mon exemple le paramètre est de type String or il fallait utiliser NSString qui fait partie du framework ‹ Foundation ›. (Alors que String appartient à ‹ Swift Standard Library ›)
Autre exemple, si on veut utiliser un objet en paramètre alors celui-ci doit doit être de type NSObject.
Dès lors tout fonctionne correctement.
Voici le code
Voilà. Peut-être que cela pourra servir à quelqu’un d’autre.
Egalement, je mets ci-dessous des liens vers les posts sur les #selector que je vous conseille même si ils datent un peu. Ils qui m’ont bien aidé à comprendre et améliorer mon code.