In meinem UiView
Ich habe eine subView
namens "Container", die eine Drehung Animation entweder ausführen sollte, wenn der Benutzer nach oben oder unten streichen. Im Grunde ist es wie ein Rad, wo, wenn der Benutzer das Rad nach unten streicht, ein gewisses Maß nach unten wischen, während das Wischen die umgekehrte Aktion ausführt.UISwipeGestureRecognizer funktioniert komisch
Hier ist mein viewDidLoad Code:
override func viewDidLoad() {
super.viewDidLoad()
//Swipe Gesture Recognizers Setup
let swipeUp = UISwipeGestureRecognizer(target: self, action: #selector(self.swipeUp(_:)))
swipeUp.direction = .up
swipeUp.delegate = self as? UIGestureRecognizerDelegate
let swipeDown = UISwipeGestureRecognizer(target: self, action: #selector(self.swipeDown(_:)))
swipeDown.direction = .down
swipeDown.delegate = self as? UIGestureRecognizerDelegate
view.addGestureRecognizer(swipeDown)
view.addGestureRecognizer(swipeUp)
}
und diese sind die zwei Funktionen für Swipe nach oben oder unten:
func swipeUp(_ sender: UISwipeGestureRecognizer) {
print("Swiped Up")
UIView.animate(withDuration: 1) {
self.borderContainer.transform = CGAffineTransform(rotationAngle: 0)
}
}
func swipeDown(_ sender: UISwipeGestureRecognizer) {
print("Swiped Down")
UIView.animate(withDuration: 1) {
self.borderContainer.transform = CGAffineTransform(rotationAngle: 45)
}}
Alles funktioniert gut, consolle druckt die Wischrichtung jedes Mal die Aktion ausgeführt wird ABER (yeah es gibt ein ABER!) Es ruft die verwandte Funktion nur EINMAL in jeder Richtung auf. Was bedeutet, dass, wenn ich nach unten streichen, dann kann ich nur bis Swipe ...
Ich will es in der Lage sein, jederzeit zu halten swiping nach oben oder unten die Nutzer wollen ...
Was mache ich falsch? las ich über die UIGestureRecogniser mit der Ansicht zusammen drehen deshalb erreichbar, es ist nicht mehr, aber ich angewandt, um die Lösung, die die Geste Recogniser auf die superview und nicht auf die Ansicht Ich bin Animieren ... Why does the Swipe Gesture Recognizer only work once?
Jede Hilfe anzuwenden ist hoch geschätzt!
Das Problem ist, Sie verstehen nicht, die Transformation funktioniert, nicht die Gestenerkennung. Sie müssen Winkel akkumulieren, um die Wunschdrehung zu erreichen. Zum Beispiel, um zweimal zu wischen, müssen Sie um 90 Grad drehen –