2014-11-22 66 views

回答

1

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

[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; 
} 
0

您有多种选择。

选项1:浮现在脑海中一对夫妇创建的UIView的定制子类,设置userInteractionEnabled的观点为真,执行的touchesBegan/touchesMoved/touchesEnded,并开发启动定时器并执行逻辑你想要什么

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

选项2将采取最前沿的研究,但会给你最灵活,可重用的解决方案。我在GitHub上找到了示例自定义的UIGestureRecognizer项目。其中一个与我合作的是KTOneFingerRotationGestureRecognizer

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