0

使用 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;  
}

NS日志:

状态开始:

76.000000-158.000000

状态结束:

0.000000--1.998666

我有个问题。我的按钮在我的屏幕外面。不知道为什么 startLocation 的 X 和 Y 被修改了?

4

1 回答 1

1

你在谈论两件不同的事情:

  1. 触发平移手势的触摸位置recognizer locationInView
  2. 视图的位置(你不说你是使用框架原点还是中心)

目前尚不清楚您要做什么,但您需要决定,您是否通过平移手势平移移动目标视图:

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 的直接子视图...

于 2013-04-16T22:40:18.860 回答