Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Swift- Drag Button from one Position to Another

Tags:

swift

I am trying to drag a button from one position to other using UITouch. But I'm not able to drag it . I'm facing problem in adding button target...

My code-

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
     let btn_swap = UIButton.buttonWithType(UIButtonType.Custom) as UIButton!
    btn_swap .setTitle("Drag Me", forState: UIControlState.Normal)
    btn_swap.backgroundColor = UIColor.yellowColor()

    btn_swap.addTarget(self, action: "wasDragged:", forControlEvents: UIControlEvents.TouchDragInside)

    btn_swap.frame = CGRectMake((self.view.bounds.size.width - 100)/2.0,
        (self.view.bounds.size.height - 50)/2.0,
        100, 50)

    self.view.addSubview(btn_swap)
    self.creation_of_btn()
 }

func wasDragged (buttn : UIButton, event :UIEvent)
{
    var touch : UITouch = event.touchesForView(buttn) . anyObject() as UITouch
    var previousLocation : CGPoint = touch .previousLocationInView(buttn)
     var location : CGPoint = touch .locationInView(buttn)
    var delta_x :CGFloat = location.x - previousLocation.x
      var delta_y :CGFloat = location.y - previousLocation.y
    buttn.center = CGPointMake(buttn.center.x + delta_x,
        buttn.center.y + delta_y);

}
like image 598
ChenSmile Avatar asked Jul 03 '14 06:07

ChenSmile


1 Answers

You given a wrong selector for your button wasDragged:. Since your action method look's like

func wasDragged (buttn : UIButton, event :UIEvent)
{
}

slector should be wasDragged: event:.

btn_swap.addTarget(self, action: "wasDragged:event:", forControlEvents: UIControlEvents.TouchDragInside)
like image 159
Anil Varghese Avatar answered Sep 28 '22 02:09

Anil Varghese