设置UILabel文本时使用UIPanGestureRecognizer进行翻译

iMa*_*din 1 objective-c uilabel uipangesturerecognizer

我在将UILabel的文本设置为手势速度时,仅使用UIPanGestureRecognizer转换视图时遇到问题。

我已经成功地用这样的平移手势转换了视图(在IB的帮助下):

- (IBAction)handleGesture:(UIPanGestureRecognizer *)sender

{   
    CGPoint translation = [sender translationInView:self.view];

    sender.view.center = CGPointMake(sender.view.center.x + translation.x, sender.view.center.y + translation.y);

    [sender setTranslation:CGPointMake(0, 0) inView:self.view];
} 
Run Code Online (Sandbox Code Playgroud)

但是,当我在此方法中添加以下行时,视图停止平移,但UILabel随速度更新:

self.myLabel.text = [NSString stringWithFormat:@"%@", [NSNumber numberWithInt:[sender velocityInView:self.roundShape].y]];
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

Sam*_*win 5

基本上,您从“平移手势识别器”获得的转换值是相对值。相对于手势开始识别触摸的起点。因此,您要抓住手势开始的原始点,然后将转换应用于该点,而不是视图的当前位置。

- (void)gestureDidTranslate:(UIPanGestureRecognizer *)panGesture
{
    if([panGesture state] == UIGestureRecognizerStateBegan){
        self.originalPoint = self.movingView.center;
    }

    CGPoint translation = [panGesture translationInView:self.view];
    self.movingView.center = CGPointMake(self.originalPoint.x+translation.x, self.originalPoint.y+translation.y);
    self.label.text = NSStringFromCGPoint([panGesture velocityInView:self.view]);
}
Run Code Online (Sandbox Code Playgroud)

我想不出您在识别器将识别器的转换值归零的时候。