UIGestureRecognizer рекомендован Apple для последних версий iOS. Вы можете использовать его не только для UIButton, но и для UIView (особенно UIImageView в вашем случае) и т. Д. Поэтому я хотел бы порекомендовать его.
В интерфейсе:
@interface TestDragViewController : UIViewController {
IBOutlet UIImageView *dragImage;
CGPoint originalCenter;
}
В viewDidLoad, plz, не забудьте включить userInteraction:
- (void)viewDidLoad {
[super viewDidLoad];
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self
action:@selector(dragGesture:)];
[dragImage addGestureRecognizer:panGesture];
[dragImage setUserInteractionEnabled:YES];
}
А в селекторе я просто установил анимацию, чтобы визуализировать возвращаемый эффект:
#pragma mark -
#pragma mark UIPanGestureRecognizer selector
- (void) dragGesture:(UIPanGestureRecognizer *) panGesture{
CGPoint translation = [panGesture translationInView:self.view];
switch (panGesture.state) {
case UIGestureRecognizerStateBegan:{
originalCenter = dragImage.center;
}
break;
case UIGestureRecognizerStateChanged:{
dragImage.center = CGPointMake(dragImage.center.x + translation.x,
dragImage.center.y + translation.y);
}
break;
case UIGestureRecognizerStateEnded:{
[UIView animateWithDuration:kImageReturnTime
animations:^{
dragImage.center = originalCenter;
}
completion:^(BOOL finished){
NSLog(@"Returned");
}];
}
break;
default:
break;
}
[panGesture setTranslation:CGPointZero inView:self.view];
}
Приветствия
Tommy