ジェスチャーのプロパティを作成します。
@property (nonatomic, strong) UILongPressGestureRecognizer *longPress;
それを初期化します:
self.longPress = [UILongPressGestureRecognizer initWithTarget:self action:@selector(gestureRecognizedStateDidChanged:)];
self.longPress.minimumPressDuration = 0.03;
ビューコントローラクラスは<UIGestureRecognizerDelegate>
プロトコルを実装する必要があります。
self.longPress.delegate = self;
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)sender {
return CGRectContainsPoint(self.targetImage.frame, [sender locationInView:self.view]);
}
- (void)gestureRecognizedStateDidChanged:(UILongPressGestureRecognizer *)sender {
switch (recognizer.state) {
case UIGestureRecognizerStatePossible:
case UIGestureRecognizerStateBegan: {
// did started, you can pick up your view
self.targerImageView.center = [sender locationInView:self.view];
break;
}
case UIGestureRecognizerStateFailed:
case UIGestureRecognizerStateCancelled:
case UIGestureRecognizerStateEnded: {
// drop callback, bring you view home or to target
if (CGRectContainsPoint(self.toDropImageViews.frame, [sender locationInView:self.view]) {
// do you drop code here
}
break;
}
case UIGestureRecognizerStateChanged: {
self.targerImageView.center = [sender locationInView:self.view];
// moving callback
break;
}
}