Вы добавляете два действия в средство выбора даты.Один и тот же указатель даты используется для обоих текстовых полей.Поэтому, когда значение средства выбора данных изменяется для любого текстового поля, вызываются оба селектора.Поскольку оба селектора вызываются, оба текстовых поля обновляются с новым значением.
Просто выберите один выбор.Просто добавьте одно действие в палитру дат.Затем в одном селекторе обновите текстовое поле, которое является первым респондентом.
override func viewDidLoad() {
super.viewDidLoad()
datepickerView = UIDatePicker()
datepickerView?.datePickerMode = .time
datepickerView?.addTarget(self, action: #selector(timeChanged), for: .valueChanged)
workHoursStartTextField.inputView = datepickerView
workHoursEndTextField.inputView = datepickerView
}
@objc func timeChanged(datePicker: UIDatePicker) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
let str = dateFormatter.string(from: datePicker.date)
if workHoursStartTextField.isFirstResponder {
workHoursStartTextField.text = str
} else {
workHoursEndTextField.text = str
}
}