[view_button addTarget:self action:@selector(dragBegan:withEvent: ) forControlEvents: UIControlEventTouchDown]; [view_button addTarget:self action:@selector(dragMoving:withEvent: ) forControlEvents: UIControlEventTouchDragInside]; [view_button addTarget:self action:@selector(dragEnded:withEvent: ) forControlEvents: UIControlEventTouchUpInside | UIControlEventTouchUpOutside]; - (void) dragBegan: (UIControl *) c withEvent:ev { NSLog(@"Button moving bagin ......"); } - (void) dragMoving: (UIControl *) c withEvent:ev { NSLog(@"Button is moving .............."); UIButton *bt = (UIButton *)c; c.center = [[[ev allTouches] anyObject] locationInView:self.view]; } - (void) dragEnded: (UIControl *) c withEvent:ev { NSLog(@"Button moving end.............."); UIButton *bt = (UIButton *)c; c.center = [[[ev allTouches] anyObject] locationInView:self.view]; }