按下按钮时,长按即可连续添加数字

时间:2014-11-22 14:08:29

标签: ios objective-c

大家好,我有一个问题,当我按下按钮长按时,我的号码必须添加连续。 就像我按下了一样,他必须添加" 1,2,3,4,5,6"连续多达59。 如果有人可以帮助我。

谢谢。

2 个答案:

答案 0 :(得分:1)

我建议你跟踪按钮的不同控制状态。您可以为三个不同的 UIControlEvent 添加目标,例如 UIControlEventTouchDown UIControlEventTouchUpInside UIControlEventTouchUpOutside 。触摸开始时会收到触碰事件,而其他两个事件会告诉您触控已退出。在这些状态之间,您可以计算值并更改一些文本。

 [button addTarget:self action:@selector(touchStarted:) forControlEvents:UIControlEventTouchDown];

 [button addTarget:self action:@selector(touchExited:) forControlEvents:UIControlEventTouchUpInside];

 [button addTarget:self action:@selector(touchExited:) forControlEvents:UIControlEventTouchUpOutside];


- (void)touchStarted:(id)sender
{
  self.touchInProgress = YES;

 /* start your counting operation and do it until the value of touchInProgress BOOL is YES */
}

- (void)touchExited:(id)sender
{
  self.touchInProgress = NO;
}

答案 1 :(得分:0)

你有很多选择。想到一对夫妇:

选项1:创建UIView的自定义子类,将视图的userInteractionEnabled设置为true,实现touchesBegan / touchesMoved / touchesEnded,并开发启动计时器并执行所需操作的逻辑

选项2:创建UIGestureRecognizer的自定义子类,提供所需的功能。手势识别器具有内置机制,用于在有趣事件发生时通知目标。你可以创建自己的参数,在开始发送消息之前有延迟量的参数,以及消息之间的间隔。

选项2将预先进行最多的研究,但会为您提供最灵活,可重复使用的解决方案。我在GitHub上找到了示例自定义UIGestureRecognizer项目。与我合作的一个是KTOneFingerRotationGestureRecognizer

创建自己的手势识别器实际上比您想象的要容易。这是我推荐的路线。这是一次很好的学习经历。