0

我正在从头开始创建我的自定义控件。像 UIScrollView 一样,我必须有一个在控件开始滑动时触发的委托方法,例如 scrollViewDidScroll。

我想在 touchesMoved 中调用一次,检查每一次移动的变化,但我做了一些类似测试的事情,它非常昂贵并且让 touchesMoved 变慢。

第二种方法是创建一个 NSTimer,每 x 毫秒触发一个方法,以查看控件是否在另一个位置,然后触发该方法,但我不确定,因为 if 将不断检查控件,即使消耗 CPU控制不动。

最好的方法是什么?你们会怎么做呢?

谢谢。

4

3 回答 3

1

也许计时器方法是正确的,如果您要计算弹跳和减速,我建议您在触摸开始时启动计时器并在触摸结束或触摸结束后 3-4 秒停止它

于 2012-06-03T19:50:47.483 回答
0

我真的认为您不应该重新发明轮子并从头开始编写自定义控件。子类 UIControl。它有3种方法

- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event

您可以在其中执行检查并解雇您的操作。

于 2012-06-03T19:47:33.857 回答
0

您可以使用 UIGestureControl 代替 touchesMoved: ,创建您的委托方法并将您的 didScroll: 方法传递给委托

于 2012-06-03T19:51:37.897 回答