2013-08-27 13 views
5

Ich habe versucht, Dinge in der linken unteren Position (bedeutet zwischen links und unten) zu wischen. Aber UISwipeGesture erkennt nur Links, Rechts, Unten und Oben.ios Implementieren Sie UISwipeGestureRecogniser in jeder Richtung in jedem Winkel

Ich möchte Gesten auf meiner gesamten Bildschirmansicht hinzufügen. Dann, wenn der Benutzer auf dem Bildschirm wischt, möchte ich die Anfangs- und Endkoordinaten des Swipe kennen. Dieser Swipe könnte in jedem Winkel und an jeder Position sein. Gibt es eine Möglichkeit, Anfangs- und Endkoordinaten von Swipe in iOS

zu bekommen, bitte helfen Sie mir. Ich bin fest stecken. Danke im Voraus.

+0

können Sie Pan verwenden Geste statt Swipe wo Sie Anfangs- und Endpunkt, von dem Sie die Richtung auf Koordinaten in Abhängigkeit erhalten. Oder der beste Weg wäre, Touch-Methoden in View zu verwenden. –

Antwort

4

Jetzt habe ich diese Implementierung durch diese Schritte verwendet: -

Sie können nach der erweiterten Klasse „UIGestureRecognizer“ einige Delegatmethoden implementieren.

Hier sind die Methoden.

// Es wird den Ausgangspunkt der Note geben

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
CGPoint startSwipePoint= [touches.anyObject locationInView:self.view]; 
} 

// Es wird der Berührungspunkt auf Normal-Basis

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
CGPoint point=[touches.anyObject locationInView:self.view]; 
} 

geben // Es wird das Ende Swipe Punkt

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    CGPoint endSwipePoint= [touches.anyObject locationInView:self.view]; 
} 

// Hier ist der Code zum Berechnen des Winkels zwischen zwei Punkten. Ich verwende Startpunkt und Endpunkt. Aber Sie können eine der zwei Punkt verwenden entsprechend Ihrer Anforderung

CGFloat angle=atan2(startSwipePoint.y -endSwipePoint.y,endSwipePoint.x -  startSwipePoint.x) * Rad2Deg; 
1

Nun, eine Route wäre, nur einen UIPanGestureRecognizer zu verwenden. Schwenkgesten ist es egal, in welche Richtung sie gehen, und sie können ihren Standort innerhalb der Ansicht verfolgen. Hier ist ein Beispiel, wie Sie diese Punkte erhalten. (Ignorieren Sie die offensichtlichen Umfang/Speicherprobleme)

- (void)panDetected:(UIPanGestureRecognizer *)gesture 
{ 
    if (gesture.state == UIGestureRecognizerStateBegan) { 
     CGPoint startingPoint = [gesture locationInView:gesture.view]; 
    }else if (gesture.state == UIGestureRecognizerStateEnded) { 
     CGPoint endPoint = [gesture locationInView:gesture.view]; 
    } 
} 

Allerdings, wenn Sie tot Satz sind auf mit Erkenner Streichgeste können Sie eine meist vollständige diagonalish Swipe-Geste Unterklasse ändern, die ich in der verknüpften Antwort hier gemacht: How to make a combined gestures?

Mit dieser Unterklasse können Sie einen Toleranzwinkel angeben, den Sie auf 44,99 Grad einstellen können und der eine Wischdetektion in praktisch jeder Richtung ermöglicht.

+0

UIPanGesture erfordert, dass das Objekt zuerst gehalten wird. – vntstudy