3

UIPanGestureRecognizer在我的应用程序中使用。我必须停止根据我得到的翻译值平移视图。这是一段简单的代码。

-(void) handlePan:(UIPanGestureRecognizer) gestureRecognizer {
 CGPoint translation = [gestureRecognizer translationInView:self.view];
 if( ((someFixedPoint.center.y - currentYCoord + translation.y) <  A_FIXED_DISTANCE ) ) 
 {
 [view setCenter:[fixedX, currentYCoord + translation.y];
 }
}

问题是translation.y每次我快速平移时都会返回不同的值。如果我缓慢平移它可以正常工作,因为**translation.y**它给出了一致的值(例如 23、24、25 ......当我平移时)。但是,如果我快速平移,它每次都会给出不同的值(例如 23,29,34...),在一次运行中,(27,31,35..)在另一次运行中。因此,每次我快速平移时, If 语句变为 false之前的最后一个中心设置在不同的点。无论我的平移速度如何,如何确保最后一个中心集每次都处于相同的最大点

4

1 回答 1

1

回调由硬件的扫描速率决定。你无法改变这一点。因此,更改您的算法以检测>=您的限制的翻译,然后将其固定到该限制。

即不直接使用计算中心translation.y,使用MIN(translation.y, MAX_VALUE)

于 2013-10-26T11:20:19.433 回答