UIPanGesture状态。结束或.cancelled并非一直执行

问题描述 投票:0回答:1

我在平移手势时遇到了一些问题。我的代码如下:

@objc func didPan(sender: UIPanGestureRecognizer) {
    if sender.state == .began {
        print("Began, start animation")
        startAnimation()
    } else if sender.state == .changed {
        print("Changing … may be do something")
    } else if sender.state == .ended || sender.state == .cancelled {
        print("Ended … stop animation")
        stopAnimation()
    }
}

问题在于,当我停止/结束平移手势时,everytime没有执行stopAnimation。而是打印出“ Changing ...”。

有时它会结束,有时却不会。我在这里错了吗?

swift uigesturerecognizer uipangesturerecognizer
1个回答
0
投票
@objc func didPan(sender: UIPanGestureRecognizer) { if sender.state == .began { print("Began, start animation") startAnimation() } else if sender.state == .ended || sender.state == .cancelled { print("Ended … stop animation") stopAnimation() } else if sender.state == .changed { print("Changing … may be do something") } }

由于您正在使用else if,因此首先会检查.changed,因此控制权不会移至stopAnimation()部分。

© www.soinside.com 2019 - 2024. All rights reserved.