1

我在 UIDatePickerModeCountDownTimer 中使用 UIDatePicker 来允许用户选择持续时间。

如果您将计时器间隔设置为 5 分钟,用户将能够选择 0 小时 : 0 分钟(这很糟糕;这在 iOS 5 甚至在 iOS 6 中是不允许的,间隔为 1 分钟)。

现在我正在通过在更改时执行此操作来修复它:

-(void)timerValueChanged
{
    int clockInterval = workoutTimePicker.minuteInterval * 60;

    if (workoutTimePicker.countDownDuration < clockInterval) {
        workoutTimePicker.countDownDuration = clockInterval;
    }
}

但这会使滚轴跳跃。如何为滚筒设置动画?

4

2 回答 2

2

目前没有setCountDownDuration:animated:,所以我们必须使用setDate:animated:.

我们必须创建一个NSDate具有当前日/月/年的对象,以允许我们使用您想要的值填充分钟组件,假设它是workoutTimePicker.minuteInterval

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:[NSDate date]];
    components.hour = 0;
    components.minute = workoutTimePicker.minuteInterval; // how much minutes you want
    components.second = 0;
NSDate * resetedMinsDate = [calendar dateFromComponents:components];        

所以有了这个新日期,我们只需要设置选择器的日期:

[workoutTimePicker setDate:resetedMinsDate animated:YES];
于 2012-11-21T13:38:54.843 回答
0

在尝试Carlos Ricardo的答案时,我发现了一个更简洁的解决方案(使用 swift):

let minDate = Calendar.current.startOfDay(for: Date()) + clockInterval
datePicker.setDate(minDate, animated: true)
于 2020-01-17T16:50:42.753 回答