2010-10-16 14 views
3

Je suis en train de développer une application iPhone/iPad qui permet de faire glisser des éléments entre les vues de la table. Comme toutes les tables ne tiennent pas sur l'écran, j'ai écrit un UIScrollView personnalisé qui les positionne horizontalement, et supporte la pagination.Division d'une séquence tactile entre plusieurs instances d'UIGestureRecognizer

Bien que j'aie obtenu le glisser-déposer primaire, il y a quelques problèmes que je n'arrive pas à surmonter.

  1. Après que l'utilisateur a sélectionné un élément pour faire glisser et se glisser, ils ne peuvent pas faire défiler la UIScrollView pour trouver la destination UITableView.

  2. Parfois, l'utilisateur voudra faire glisser l'élément dans la même vue de table. Mais une fois que le glissement a commencé, la vue de la table ne reconnaît plus le geste de défilement.

J'ai essayé une variété de différentes options, y compris la mise en œuvre d'un UIGestureRecognizerDelegate et permettant à de multiples dispositifs de reconnaissance geste de reconnaître les gestes en même temps. Le problème, tel que je le vois, découle de cette description du Guide de gestion des événements: «iOS reconnaît un ou plusieurs doigts qui touchent l'écran dans le cadre d'une séquence multitouch.Cette séquence commence lorsque le premier doigt touche l'écran. et se termine lorsque le dernier doigt est levé de l'écran. "

UIGestureRecognizer les instances correspondent toujours à l'ensemble de la séquence . Dans mon cas, je veux diviser une seule séquence en gestes discrets - certaines touches reconnaissent un déplacement d'un élément, alors que différentes touches au sein d'une même séquence doivent être reconnues comme un geste de balayage ou de défilement. Effectivement, je veux que mes reconnaisseurs de gestes reconnaissent simultanément, mais seulement différentes touches. Une fois que l'on reconnaît un contact comme faisant partie d'un geste, ce contact devrait être ignoré par les autres.

Je n'ai pas trouvé un moyen de résoudre tous ces problèmes de façon cohérente en utilisant les sous-classes UIGestureRecognizer par défaut, et je suis sur le point d'écrire mon propre outil de reconnaissance de gestes mutli-part personnalisé.

Je préfère ne pas avoir à le faire - y a-t-il un moyen plus approprié d'obtenir le même résultat?

Répondre

2

Étant donné le silence ici, et un billet de blog que je viens de trouver, je crois que la réponse est que non, il n'y a aucun moyen de faire de la reconnaissance sous-gestuelle avec le cadre standard.

Pour ceux qui cherchent à faire quelque chose de similaire, jetez un oeil à ce projet/blog, qui est une tentative de créer une bibliothèque de reconnaissance sous-geste:

http://sunetos.com/items/2010/10/31/adding-subgestures-to-ios-gesture-recognition/

Je n'ai pas utilisé - J'ai fini par créer manuellement mes propres itérations - mais je considérerai le refactoring pour l'utiliser si ça se passe.