2 votes

UIResponder vs UIGestureRecognizer pour la réponse aux événements tactiles

J'ai fait des recherches sur les différentes méthodes de programmation des réponses aux événements tactiles pour une application que je suis en train de créer, et je suis un peu perdu par ce que je lis.

Pour autant que je sache, il existe deux méthodes généralement acceptées pour répondre au toucher dans iOS : la reconnaissance des gestes et la reconnaissance du toucher.

Quand est-il approprié d'utiliser l'un ou l'autre ?

Spécifiquement pour ce que je suis en train de construire* :

J'écris un contrôleur pour une vue qui doit placer des éléments (UIImageViews) sur l'écran à l'endroit où l'utilisateur les touche et aussi les déplacer lorsque l'utilisateur les fait glisser. Le contrôleur communique avec un modèle séparé et j'ai donc besoin d'un contrôle granulaire pour savoir quand envoyer des messages au modèle lors des événements tactiles.

Le modèle doit savoir à quel endroit l'utilisateur touche l'écran pour la première fois (le multitouch n'est pas activé) et à quel endroit il le soulève. J'ai besoin d'interroger le modèle lorsque l'utilisateur touche l'écran pour savoir si l'utilisateur veut modifier l'emplacement d'une image ou en créer une nouvelle, et j'ai besoin d'envoyer un message au modèle sur l'endroit où l'utilisateur quitte l'écran pour que le modèle puisse être mis à jour. Au cours d'un événement de glisser, je dois également envoyer des requêtes constantes au modèle pour déterminer si l'emplacement où l'utilisateur plane à un moment donné est valide.

Au début, j'ai pensé que je pourrais utiliser un dispositif de reconnaissance des gestes de la main pour faire le travail, mais en y regardant de plus près, je n'ai pas trouvé le moyen de configurer des appels de fonctions personnalisées lors des événements de toucher, de glisser et de décoller (s'il y a un moyen, ce serait bien de le savoir). J'ai trouvé les méthodes UIResponder, mais sont-elles encore à utiliser, ou est-il préférable de travailler avec les reconnaissances de gestes dans iOS6 ?

* Le code n'est pas inclus car la portée de cette question est assez large et je ne veux pas distraire les gens avec des détails inutiles.

1voto

Hari Karam Singh Points 1942

Je suis venu ici parce que je faisais des recherches sur l'efficacité de UIGestureRecognizer par rapport à la UIResponder -car je les utilise pour une application à faible latence. Pour une utilisation générale, je peux confirmer que vous pouvez soit remplacer la méthode touchesBegan/Moved/Ended/Cancelled etc. dans votre UIView sous-classe ou dans une UIGestureRecognizer (qui est ajoutée à la classe UIView ) ou même dans un UIViewController (elle fait partie de la chaîne des répondeurs, tout comme l'est l'option UIView ).

Vous pouvez également sous-classer un UIGestureRecognizer comme Pan GR et remplacer ces méthodes pour ajouter des fonctionnalités supplémentaires tout en tirant parti de ce qu'elles détectent déjà. Veillez à appeler super (dans tous les cas ci-dessus d'ailleurs) et vous voudrez probablement vérifier ou mettre à jour le fichier state propriété.

Quant à mon Quant à savoir lequel est le plus efficace, je ne le sais pas encore, mais j'imagine que c'est presque équivalent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X