I\'m trying to allow some UIButton instances on one of my views to be touched and dragged around the screen (eventually with momentum, but that\'s for later!). I ha
For beginners like me, I tried UIPanGestureRecognizer as suggested above, but it did not work. So, here is my simple solution:
First, add event listeners as suggested by Baig:
// add drag listener
[button addTarget:self action:@selector(wasDragged:withEvent:) forControlEvents:UIControlEventTouchDragInside];
// add tap listener
[button addTarget:self action:@selector(wasTapped:) forControlEvents:UIControlEventTouchUpInside];
Both drag and tap will both trigger UIControlEventTouchUpInside, so add a flag in wasDragged:withEvent: like this:
-(IBAction)wasDragged: (id)sender withEvent: (UIEvent *) event {
was_dragged = YES;
UIButton *selected = (UIButton *)sender;
selected.center = [[[event allTouches] anyObject] locationInView:self.view];
}
- (IBAction)buttonWasTapped:(id)sender {
if(!was_dragged)
NSLog(@"button tapped");
else{
was_dragged = NO;
NSLog(@"button dragged");
}
}
Voila. Done.