2010-12-27 9 views
2

Ich arbeite an einer iOS/iPad Lern-App, die eine Uhr mit 2 Händen (Stunde und Minute) anzeigt. Wenn sich der Benutzer dort dreht, Finger auf das Zifferblatt, möchte ich die Zeit entweder vorwärts oder rückwärts bewegen. Dies wird eine einzelne Fingergeste oder eine Drehbewegung sein.iOS Erkennen von kreisförmigen Berührungen (im Uhrzeigersinn und gegen den Uhrzeigersinn)

Haben Sie Ideen, wie Sie feststellen können, ob der Benutzer seinen Finger im Uhrzeigersinn oder gegen den Uhrzeigersinn um das Zifferblatt dreht?

Ich dachte über die Berechnung des Winkels nach und übersetzte dann den Winkel in einen "Abschnitt" von etwa 30 Grad. Dann beobachten Sie das Muster der Abschnitte, die stolpern.

Frage mich nur, ob jemand eine "whiz bang" -Lösung hat, die ich nicht in Betracht ziehe? Etwas elegantes vielleicht?

Danke.

Antwort

0

Machen Sie den Startpunkt der Geste nominal 0,0 und teilen Sie den Bildschirm in vier Quadranten mit x-und y-Achsen durch Ihre nominale 0,0. Beachten Sie, welche Quadranten der Reihe nach besucht werden. Nach den ersten beiden, haben Sie die Direktionalität:

 Movement into lower right quadrant followed by movement into upper right is counterclockwise 
     Movement into lower right quadrant followed by movement into lower left is clockwise 
     Movement into lower left quadrant followed by movement into lower right is counterclockwise 
     Movement into lower left quadrant followed by movement into upper left is clockwise 
     Movement into upper left quadrant followed by movement into lower left is counterclockwise 
     Movement into upper left quadrant followed by movement into upper right is clockwise 

     etc etc 
1

Was Sie tun müssen, ist mindestens drei Punkte zu halten, dann berechnen nur den Bereich des „Dreieck“ bilden.

CGPoint a = lastStart; 
CGPoint b = start; 
CGPoint c = end; 
float area = a.x * b.y - a.y * b.x + a.y * c.x - a.x * c.y + b.x * c.y - c.x * b.y; 

if(area > 0) { 
    // you're moving CCW 
} 
Verwandte Themen