UISwipeGestureRecognizer 工作异常

UISwipeGestureRecognizer working weird

在我的 UiView 中,我有一个名为 'container' 的 subView,如果用户向上或向下滑动,它应该执行旋转动画。 基本上它就像一个轮子,如果用户向下滑动轮子,向下滑动一定程度,同时向上滑动执行相反的动作。

这是我的 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)
    }}

一切正常,控制台在每次执行操作时打印滑动方向但是(是的,有一个但是!)它在每个方向上只调用一次相关函数。 也就是说,如果我向下滑动,那么我只能向上滑动...

我希望它能够在用户需要的任何时候继续向下或向上滑动...

我做错了什么? 我读到了有关 UIGestureRecogniser 与视图一起旋转的信息,因此它不再可用,但我应用了将手势识别器应用于 superView 而不是我正在制作动画的视图的解决方案...

非常感谢任何帮助!

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

如果你想每次都改变它,你需要在当前角度上增加 45度。否则会一直在原来的位置。

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

CGAffineTransform 只为 rotation.Keep 选择 最短路径 请记住,如果旋转 something.Your 滑动就可以了但您需要稍微修改旋转代码才能使其正常工作。