【问题标题】:How frequently the UIPanGestureRecognizer gives a callback?UIPanGestureRecognizer 多久进行一次回调?
【发布时间】:2013-10-26 11:02:53
【问题描述】:

我在我的应用程序中使用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 ......当我平移时)。但是,如果我快速平移,它每次都会给出不同的值(对于 Ex 23,29,34...),在一次运行中,(27,31,35..)在另一次运行中。因此,每次我快速平移时,If 语句 变为 false 之前的最后一个中心都会设置在不同的点。 无论我的平移速度如何,如何确保最后一个中心集每次都处于相同的最大点

【问题讨论】:

    标签: ios objective-c uiview uigesturerecognizer


    【解决方案1】:

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

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

    【讨论】:

    • 感谢 Wain 提供的简单解决方案。我想不出来。该死!
    猜你喜欢
    • 2018-07-01
    • 2014-09-21
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 2014-01-20
    • 1970-01-01
    相关资源
    最近更新 更多