平移视图不会停留在使用UIPanGestureRecognizer进行平移的位置

时间:2013-02-16 20:10:46

标签: uipangesturerecognizer

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

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

在state =开始时,我应用一个变换来略微提升比例。 (这个ALSO似乎没有用,但这是另一个故事)。

任何人都可以告诉我哪里出错了吗?

- (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;
}

}

提前致谢。 : - )

1 个答案:

答案 0 :(得分:0)

我发现视图WAS确实正常移动,但CGAffineTransformIdentity在识别器.state =结束时将其放回原始帧位置。