繁体   English   中英

没有setTranslation的平移手势奇怪的行为

[英]A pan gesture without setTranslation strange behaviour

我的代码:

@IBAction func handlePan(gesture: UIPanGestureRecognizer) {
    let transition = gesture.translationInView(self.view)
    switch gesture.state{
    case .Changed:
        if let view = gesture.view {
            view.center = CGPoint(x: view.center.x + transition.x, y: view.center.y + transition.y)
        }
        gesture.setTranslation(CGPointZero, inView: self.view)

    default:break
    }
}

因此,我可以在屏幕上拖动一个大按钮。 一切正常,直到我注释掉gesture.setTranslation(CGPointZero, inView: self.view)

我以为一行代码只会告诉应用程序记住按钮在屏幕上的最后位置,下次再从那里移开,但是...

然后,我再次在模拟器上运行该项目,当我单击该按钮并尝试移动一点时,该按钮正向同一方向飞行并从屏幕上消失了,为什么?

当您平移时, transition值是从您首次开始笔势开始的地方。

看一下如何移动按钮。 您只需将越来越大的transition添加到每个更新的center 您需要做的是将最新的transition添加到center就像第一次识别到摇动手势时一样。

因此,要么重新翻译(就像在你发布的代码),或保存原始center按钮时手势的状态是.Began和翻译向原中心值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM