我正在使用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]);
}
}
答案 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));