1

UIPanGestureRecognizer を使用して画面上でオブジェクトを移動しようとしています。私のパニング コードは正常に動作しているようです。オブジェクトを簡単に移動できます。しかし、オブジェクトを離すと元の位置に戻ります。パンした場所にとどまりません。

パン可能なオブジェクトはシンプルな UIView で、メインの self.view フィールド内を移動しています。たとえば、viewDidLoad のコードで手動ではなく、XCode のオブジェクト パレットを使用して UIPanGesture を追加しました。

state = started で、トランスフォームを適用してスケールを少し上げます。(これも機能していないようですが、それは別の話です)。

誰が私が間違っているのか教えてもらえますか?

- (IBAction)bucketTouch:(UIPanGestureRecognizer *)recognizer {
switch ([recognizer state]) {
    case UIGestureRecognizerStateBegan:{
        [UIView animateWithDuration:.2 animations:^{
            self.pail.transform = CGAffineTransformMakeScale(1.25, 1.25);
        }];
    }
        break;

    case UIGestureRecognizerStateChanged:{
        CGPoint centerPoint = self.pail.center;
        CGPoint newPoint = [recognizer translationInView:self.view];
        CGPoint finalPoint = CGPointMake(centerPoint.x + newPoint.x, centerPoint.y + newPoint.y);
        self.pail.center = finalPoint;
        [recognizer setTranslation:CGPointZero inView:self.view];
    }
        break;

    case UIGestureRecognizerStateEnded:{
        [self.view sendSubviewToBack:self.pail]; 
        [UIView animateWithDuration:.2 animations:^{
            self.pail.transform = CGAffineTransformIdentity;
        }];
    }
        break;

    default:
        break;
}

}

前もって感謝します。:-)

4

1 に答える 1

0

ビューは実際に適切に移動していたことがわかりましたが、CGAffineTransformIdentity は、認識時に元のフレーム位置に戻していました。

于 2013-02-22T00:58:18.793 に答える