[英]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.