iOS - 理解速度在Pan Gesture上的视图

时间:2011-02-02 19:26:31

标签: objective-c ipad ios

我正在使用UIPanGesture来返回velocityInView,而我收集它应该是每秒返回点数。我得到的是数以亿计的数字和很多零...我不会在模拟器中快速移动我的鼠标。

我想......

提前感谢您提供的任何帮助/建议。

编辑:请求的代码。

显示/通话

-(void)handlePanGesture:(UIPanGestureRecognizer *) recognizer
{
    if (recognizer.state == UIGestureRecognizerStateChanged || 
        recognizer.state == UIGestureRecognizerStateBegan)
    {
        CGPoint vel = [recognizer velocityInView:myScrollView];
        //[self doSpinAnimationWithVelocity:vel.x];
        NSLog([NSString stringWithFormat:@"Velocity - X-Axis - %d ", vel.x]);
        NSLog([NSString stringWithFormat:@"Velocity - Y-Axis - %d ", vel.y]);
    }
}

Image here of output since I'm still below 10 rep

3 个答案:

答案 0 :(得分:4)

没有你的代码很难说......

CGPoint由CGFloats组成,根据您打印它们的方式,您可能会得到意想不到的结果

传递给velocityInView的视图:必须在视图层次结构中,在将视图传递给velocityInView:方法之前通过查看视图上的window属性来检查它:

答案 1 :(得分:1)

我知道我有点迟到了,但另一个提示:查看NSStringFromCGPoint()和家人:

-(void)handlePanGesture:(UIPanGestureRecognizer *) recognizer
{
   if (recognizer.state == UIGestureRecognizerStateChanged || 
       recognizer.state == UIGestureRecognizerStateBegan)
   {
      CGPoint vel = [recognizer velocityInView:myScrollView];
      NSLog(@"%@", NSStringFromCGPoint(vel));
   }
}

答案 2 :(得分:0)

看起来像velocityInView:返回一个CGPoint,表示水平和垂直分量(基本上,它是一个向量)。由于速度被分解为这两个组件,因此您必须小心分析值。如果你更多地考虑速度而不是速度,你可以采用向量的大小,即:

CGFloat magnitude = sqrtf((velocityPoint.x * velocityPoint.x) + (velocityPoint.y * velocityPoint.y));