1

我已经使用来自另一个堆栈溢出线程(UIButton Touch and Hold)的代码在按钮(UIButton)保持上实现了重复任务。

由于各种原因,我想要重复延迟。重复延迟的定义

但是,我不能完全理解如何做到这一点。我对 iPhone 编码比较陌生。

4

1 回答 1

2

受到您建议的代码的启发,您可以执行以下操作:

制作一个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 {

    // ...
}
于 2012-10-18T23:02:10.937 回答