когда я выбираю сборщик для первого раза datePickerValueChanged не вызывается.однако в следующий раз он работает нормально, а часы и минуты не отображаются полностью, и еще одна вещь, которую я хочу скрыть при нажатии вне текстового поля, это работает, но когда я нажимаю на кнопку, также скрывается окно выбора, чего я не хочуи можно ли скрыть окно выбора при втором нажатии текстового поля, значит, я хочу открыть и скрыть окно выбора при прикосновении к textField.Вот мой код ..
override func viewDidLoad() {
super.viewDidLoad()
super.hideKeyboardWhenTappedAround()
self.timeTF.delegate = self
self.picker.datePickerMode = .countDownTimer
self.picker.addTarget(self, action: #selector(datePickerValueChanged(_:)), for: .valueChanged)
self.picker.setValue(UIColor.white, forKey: "textColor")
self.picker.countDownDuration = 60 * 30
self.timeTF.rightView = rightButtonView
self.timeTF.rightViewMode = .always
}
@objc func datePickerValueChanged(_ sender: UIDatePicker){
let dateFormatter: DateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm"
let selectedDate: String = dateFormatter.string(from: sender.date)
timeTF.text = selectedDate
let components = Calendar.current.dateComponents([.hour, .minute, .second], from: sender.date)
if let hour = components.hour, let minute = components.minute {
let timeString = String(format: "%02ld:%02ld", hour, minute)
self.timeTF.text = timeString
self.viewModel.hour = hour
self.viewModel.minute = minute
self.totalTime()
}
}
// Hide keyboard when touch outside
func hideKeyboardWhenTappedAround() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
}
@objc func dismissKeyboard() {
view.endEditing(true)
}