我使用UIDatePicker作为UITextField的输入。
datePicker.addTarget(self, action: #selector(DetailViewController.handleDatePicker(_:)), forControlEvents: UIControlEvents.ValueChanged)
我有一些使用上述UIDatePicker的UITextField:
func handleDatePicker(sender: UIDatePicker) {
let timeFormatter = NSDateFormatter()
timeFormatter.dateStyle = .MediumStyle
for view in self.view.subviews {
if view.tag == currentTagOfTextField {
if let currentTextField = view as? UITextField {
currentTextField.text = timeFormatter.stringFromDate(sender.date)
}
}
}
}
当选择datePicker上当前显示的日期以外的日期时,此方法正常。 如果用户未在datePicker上更改当前显示的日期,则textField不会更新日期。仅当用户主动更改日期向前和向后文本字段时才会更新。
我认为这与行动中的.valueChanged
有关,但不确定如何解决此问题。