1

我有一个自定义 UISlider 子类,旨在限制滑块可以移动的速率。理想情况下,我希望这种限制以口头上合理的方式进行,例如“每秒 5 个单位”。现在我能做的最好的事情就是限制滑块的值可以在每次更新的基础上改变的量。从理论上讲,我可以跟踪自上次触发更新以来的时间,但是如果用户在短时间内没有移动他/她的手指,那么该计算就会消失。

简而言之:有没有一种方法可以获得设备的触摸事件频率,以便在一个设备或另一个设备上的触摸事件较慢的情况下,相对于实时的变化率保持不变?

4

1 回答 1

0

你为什么不监控触摸的开始和结束,看看触摸何时开始?

然后在触摸结束之前,查看触摸事件的 X 轴变化量,并根据移动相应地移动滑块?

您需要的是使用这 3 个委托方法:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

你可以有一个布尔值来标记触摸的开始/结束,然后如果布尔值为真,你可以使用 touchesMoved 委托来移动滑块。

于 2012-05-24T13:42:44.773 回答