簡體   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