大家好,我有一个问题,当我按下按钮长按时,我的号码必须添加连续。 就像我按下了一样,他必须添加" 1,2,3,4,5,6"连续多达59。 如果有人可以帮助我。
谢谢。
答案 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
创建自己的手势识别器实际上比您想象的要容易。这是我推荐的路线。这是一次很好的学习经历。