2017-05-29 73 views
0

在我的UiView我有一个subView叫'容器',应该执行旋转动画,如果用户向上或向下滑动。 基本上,它就像一个轮子,如果用户向上滑动轮子时向下滑动一定程度,同时向上滑动则执行相反的操作。UISwipeGestureRecognizer奇怪的工作

这里是我的viewDidLoad代码:

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) 
} 

这些都是刷卡的2个功能向上或向下:

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) 
    }} 

一切都很正常,consolle正在打印刷卡方向每次执行动作但是(是的,有一个但是!)它只在每个方向上调用相关函数。 也就是说,如果我快速向下滑动,那么我只能向上滑动,...

我希望它能够保持向下滑动,向上或任何时候,用户想要...

我在做什么错? 我看了一下UIGestureRecogniser与因此认为它是不可达一起转动了,但我申请了手势识别器适用于上海华并没有查看我的动画解决方案... Why does the Swipe Gesture Recognizer only work once?

任何帮助是高度不胜感激!

+1

问题是你不明白转换的作品,而不是手势识别。你必须积累角度来实现期望的旋转。对于前,向下滑动2次,你必须旋转90度 –

回答

1

仔细看看您的向下滑动功能。每次向下滑动时都设置相同的值。

你需要如果你想每次改变45度到当前角度。否则,它将继续保持和以前一样的地位。

尝试使用borderContainer.transform.rotated(by: 45)

+0

谢谢!虽然border.Container.transform.rotated没有起作用,但您在何处查看了正确的提示。我用一个简单的循环检查角度并相应地进行修复! – Alex

0

CGAffineTransform只选择最短路径为rotation.Keep记住,如果旋转something.Your轻扫是好的,但你需要修改轮换代码一点点,使其工作。