countDownTimer模式下设置UIDatePicker的最大时间

Set maximum time of UIDatePicker in countDownTimer mode

我是 swift 的新手,我正在尝试使用一个选择器来 select 通知的频率。我想将用户可以选择的最大时间设置为 2 小时,但我正在做的事情不起作用有人知道这是否可能吗?

这是我所做的:

let minutePicker = UIDatePicker()
minutePicker.datePickerMode = .countDownTimer
minutePicker.minuteInterval = 10 //sets the interval of minutes.
minutePicker.countDownDuration = 30*60 //set starting value.
minutePicker.maximumDate = Date(timeInterval: 60*60*2, since: Date())

你可以这样做:

   let minutePicker = UIDatePicker()
    minutePicker.datePickerMode = .countDownTimer
    minutePicker.addTarget(self, action: #selector(respondToChanges(picker:)), for: .valueChanged)
    minutePicker.minuteInterval = 10

    var components = DateComponents()
    components.minute = 30
    let date = Calendar.current.date(from: components)!
    minutePicker.setDate(date, animated: true)

然后你必须创建一个 respondToChanges 方法。可能的实现如下所示:

@objc
func respondToChanges(picker: UIDatePicker) {
    if (picker.countDownDuration > 7200) { //countDownDuration has to be in seconds
        var components = DateComponents()
        components.hour = 2
        let date = Calendar.current.date(from: components)!
        picker.setDate(date, animated: true)
    }
}

文档说:"The minimum and maximum dates are ignored in the countdown-timer mode"。因此,使用我的解决方案,您将时间手动设置回 2 小时,每次用户 select 超过 2 小时。