Вы можете сделать что-то вроде этого:
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)
Затем вам нужно создать метод responseToChanges. Возможная реализация будет выглядеть так:
@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)
}
}
В документации сказано: «Минимальная и максимальная даты игнорируются в режиме таймера обратного отсчета». Итак, с моим решением вы вручную устанавливаете время обратно на 2 часа, каждый раз, когда пользователь выбирает более 2 часов.