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