我正在尝试使用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;
}
}
提前致谢。 : - )
答案 0 :(得分:0)
我发现视图WAS确实正常移动,但CGAffineTransformIdentity在识别器.state =结束时将其放回原始帧位置。