2016-03-14 100 views
4

這是我的第一個問題!我只是想知道,在Swift中(特別是Swift 2,儘管這可能不言而喻!),你如何創建一個用戶可以拖動的按鈕。例如,如果它是一個UIButton,用戶可以點擊並按住它,當他們移動手指時,UIButton隨之移動,當它釋放時,它仍然處於用戶離開它的位置。可能會有一個捕捉系統,但現在這不重要。Swift中的可拖拽UIButton /元素?

我搜索了StackOverflow,發現了一些相當有趣的事情,但它都是Objective-C的,儘管Swift在某些方面非常相似,但我無法弄清楚如何在如何實現這一點迅速。

對於我正在開發的一個項目,我將大力讚賞!

非常感謝!

+0

您是否使用自動佈局?如果是這樣,請發佈您的約束。 – tktsubota

回答

0

基本上,當你點擊/移動所說的按鈕時,你想要實現一個觸摸手勢識別器,並將按鈕的中心設置到新聞中心。

下面是你要做到這一點:https://stackoverflow.com/a/31487087/5700898

而且,真的很酷的想法!

8

您可以在您的UIButton上實施UIPanGestureRecognizer

無論您創建按鈕(viewDidLoad如果使用網點):

let pan = UIPanGestureRecognizer(target: self, action: "panButton:") 
button.addGestureRecognizer(pan) 

這將創建一個新的泛手勢識別,並將其添加到按鈕。現在,你需要實現平移的動作。首先,您需要存儲按鈕的中心,以便在完成平移時可以將其重置。將其作爲視圖控制器屬性添加:

var buttonCenter = CGPointZero 

然後執行平移操作。請注意,您可以使用手勢識別器狀態來確定平底鍋何時開始和結束:

func panButton(pan: UIPanGestureRecognizer) { 

    if pan.state == .Began { 
     buttonCenter = button.center // store old button center 
    } else if pan.state == .Ended || pan.state == .Failed || pan.state == .Cancelled { 
     button.center = buttonCenter // restore button center 
    } else { 
     let location = pan.locationInView(view) // get pan location 
     button.center = location // set button to where finger is 
    } 

} 
+0

非常感謝:D – caluga