使用Pan GestureComponent,我试图拖动当前对象的第一个位置。为此,我做了:
首先,当状态开始时,我存储按钮的位置。
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer{
CGPoint startlocation;
// Get Position X and Y
if (recognizer.state == UIGestureRecognizerStateBegan) {
startlocation = [recognizer locationInView:self.view];
NSLog(@"%f" @"-" @"%f", startlocation.x , startlocation.y);
}
当用户释放按钮(状态已结束)时,我想首先将按钮设置回去。
// Quand on lache le composant : Action de fin
if (recognizer.state == UIGestureRecognizerStateEnded)
{
NSLog(@"%f" @"-" @"%f", startlocation.x , startlocation.y);
recognizer.view.center = startLocation;
}
NSLog:
状态开始:
76.000000-158.000000
状态端:
0.000000--1.998666
我有个问题。我的按钮在屏幕外侧。我不知道为什么startLocation的X和Y被修改了?
最佳答案
您正在谈论两件事:
触发平移手势的触摸位置recognizer locationInView
视图的位置(如果使用框架原点或中心,则不说)
目前尚不清楚您要做什么,但您需要决定,是否要通过平移手势转换来移动目标视图:
if (recognizer.state == UIGestureRecognizerStateBegan) {
startLocation = targetView.center;
}
CGPoint translation = [recognizer translationInView:self.view];
CGPoint newCenter = startLocation;
newCenter.x += translation.x;
newCenter.y += translation.y;
targetView.center = newCenter;
或者您试图将目标视图捕捉到平移手势位置
targetView.center = [recognizer locationInView:self.view];
所有这些都假定目标视图是self.view的直接子视图。