修改UIStepper自动重复行为

Dar*_*ren 2 uicontrol ios ios5 uicontrolevents uistepper

我有一个客户希望我修改UIStepper的自动重复行为.

如果用户选择触摸并保持说步进器的+按钮,则步进器的值开始以每半秒左右的速率增加1秒,然后在约3秒后,值开始变化得更快.

无论如何都要修改它的工作原理,例如,如果用户点击并保持,值会立即以更快的速率增加?

我查看了UIStepped文档,但我没有看到任何相关内容,但我想知道是否有办法通过IBAction或其他方式来做到这一点.

lif*_*joy 7

首先,为步进器添加两个操作:

[theStepper addTarget:self action:@selector(stepperTapped:) forControlEvents:UIControlEventTouchDown];
[theStepper addTarget:self action:@selector(stepperValueChanged:) forControlEvents:UIControlEventValueChanged];
Run Code Online (Sandbox Code Playgroud)

以下是这些操作的样子:

- (IBAction)stepperTapped:(id)sender {
self.myStepper.stepValue = 1;
self.myStartTime = CFAbsoluteTimeGetCurrent();
Run Code Online (Sandbox Code Playgroud)

}

- (IBAction)stepperValueChanged:(id)sender {
self.myStepper.stepValue = [self stepValueForTimeSince:self.myStepperStartTime];
// handle the value change here
Run Code Online (Sandbox Code Playgroud)

}

这是神奇的代码:

- (double)stepValueForTimeSince:(CFAbsoluteTime)aStartTime {
double theStepValue = 1;
CFAbsoluteTime  theElapsedTime  = CFAbsoluteTimeGetCurrent() - aStartTime;

if (theElapsedTime > 6.0) {
    theStepValue = 1000;
} else if (theElapsedTime > 4.0) {
    theStepValue = 100;
} else if (theElapsedTime > 2.0) {
    theStepValue = 10;
}

return theStepValue;
Run Code Online (Sandbox Code Playgroud)

}