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 小时。
我是 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 小时。