iPhone SDK:重复延迟的UIButton重复

时间:2012-10-18 22:40:49

标签: iphone uibutton delay repeat

我已经使用另一个Stack Overflow线程(UIButton Touch and Hold)中的代码在按钮(UIButton)上实现了重复任务。

由于各种原因,我想重复延迟。 definition of repeat delay

然而,我无法完全理解如何做到这一点。我对iPhone的编码相对较新。

1 个答案:

答案 0 :(得分: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秒触发一次动作方法。然后再进行另一次IBAction“Touch Up Inside”和“Touch Up Outside”以使计时器无效。

例如:

-(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 {

    // ...
}