2010-05-09 5 views
0

J'ai besoin de calculer la direction de glisser une touche, pour déterminer si l'utilisateur fait glisser l'écran, ou en bas de l'écran.Comment suivre le vecteur tactile?

En fait assez simple, non? Mais:

1) doigt baisse, vous obtenez -touchesBegan: withEvent: appelé

2) Il faut attendre doigt se déplace et -touchesMoved: withEvent: est appelée

3) Problème: A ce point qu'il est dangereux de dire si l'utilisateur a fait glisser vers le haut ou vers le bas. Réflexion: Vérifier l'heure et accumuler calcule les vecteurs jusqu'à ce qu'il soit sûr de dire la direction du toucher.

Facile? Non. Pensez-y: que se passe-t-il si l'utilisateur maintient le doigt pendant 5 minutes au même endroit, mais décide alors de monter ou descendre? COUP! Votre code échouerait, car il essayait de déterminer la direction du toucher lorsque le doigt ne bougeait pas vraiment. Problème 2: Lorsque le doigt descend et reste au même endroit pendant quelques secondes parce que l'utilisateur est un peu dans le vent et pense à ce qu'il faut faire maintenant, vous obtiendrez beaucoup de -touchesMoved: withEvent : appels très probable, mais avec des changements très mineurs dans l'emplacement tactile. Donc, ma pensée suivante: Faire l'accumulation dans -touchesMoved: withEvent:, mais seulement si un certain seuil de mouvement a été dépassé.

Je parie que vous avez quelques meilleurs concepts en place?

+0

n'y at-il pas des bibliothèques pour ce genre de chose? –

Répondre

1

Si vous parlez juste de détecter des balayages, alors dans OS 3.2, Apple a introduit gesture recognizers pour rendre ce genre de chose plus facile dans les applications iPad. Vous pouvez également écrire vos propres reconnaisseurs pour d'autres types de gestes (comme les longues traînées), avec l'OS faisant le plus gros du travail, et vous informer des «moments intéressants».

Selon somereports, il semble qu'ils seront en version 4.0 et disponibles pour l'iPhone.

+0

non, j'utilise OS 3.0 et j'ai déjà beaucoup de code pour le traitement tactile en place. Tout ce dont j'ai besoin est une stratégie pour détecter le vecteur de manière sûre. – dontWatchMyProfile