1

我正在尝试使用 UIPanGestureRecognizer 在屏幕上移动对象。我的平移代码似乎工作正常。我可以轻松地移动我的对象。但是当我放开物体时,它会弹回原来的位置;它不会停留在我平移它的位置。

pan-able 对象是一个简单的 UIView,它在我的主 self.view 字段中移动。例如,我使用 XCode 中的对象腭添加了 UIPanGesture,而不是在 viewDidLoad 中的代码中手动添加。

在状态 = 开始时,我应用了一个变换来稍微提高比例。(这似乎也不起作用,但那是另一回事)。

谁能告诉我哪里出错了?

- (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 在识别器.state = 结束时将其放回其原始帧位置。

于 2013-02-22T00:58:18.793 回答