我已经使用来自另一个堆栈溢出线程(UIButton Touch and Hold)的代码在按钮(UIButton)保持上实现了重复任务。
由于各种原因,我想要重复延迟。重复延迟的定义
但是,我不能完全理解如何做到这一点。我对 iPhone 编码比较陌生。
受到您建议的代码的启发,您可以执行以下操作:
制作一个NSTimer
将在按下按钮时启动并每秒钟触发一个方法的方法x
。
标题(.h):
// Declare the timer and the needed IBActions in interface.
@interface className {
NSTimer * timer;
}
-(IBAction)theTouchDown(id)sender;
-(IBAction)theTouchUpInside(id)sender;
-(IBAction)theTouchUpOutside(id)sender;
// Give the timer properties.
@property (nonatomic, retain) NSTimer * timer;
实施文件(.m):
// Synthesize the timer
// ...
为“Touch Down”做一个IBAction
启动计时器,该计时器将每 2 秒触发一次动作方法。然后为“Touch Up Inside”和“Touch Up Outside”制作另一个 IBAction,以使计时器无效。
例如:
-(IBAction)theTouchDown {
self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(action:)
userInfo:nil
repeats:NO];
}
-(IBAction)theTouchUpInside {
[self.timer invalidate];
self.timer = nil;
}
-(IBAction)theTouchUpOutside {
[self.timer invalidate];
self.timer = nil;
}
然后在该方法中NSTimer
执行任何您需要的操作:
-(void)action:(id)sender {
// ...
}