【发布时间】:2021-01-29 04:59:47
【问题描述】:
我创建了一个 UITextField 和一个 datePicker 作为 InputView。除了显示设置的日期和时间外,一切正常。
这是我的代码:
func setDatePickerAsInputView(target: Any, selector: Selector) {
let screenWidht = UIScreen.main.bounds.width
let datePicker = UIDatePicker(frame: CGRect(x: 0.0, y: 0.0, width: screenWidht, height: 300))
datePicker.datePickerMode = .dateAndTime
self.inputView = datePicker
let toolBar = UIToolbar(frame: CGRect(x: 0.0, y: 0.0, width: screenWidht, height: 30.0))
self.inputAccessoryView = toolBar
}
func setUpDateTextField() {
//DateTextField
dateTextField.layer.cornerRadius = 25
dateTextField.layer.borderWidth = 2
dateTextField.textAlignment = .center
self.dateTextField.setDatePickerAsInputView(target: self, selector: #selector(dateSelected))
dateTextField.translatesAutoresizingMaskIntoConstraints = false
dateTextField.widthAnchor.constraint(equalToConstant: 200).isActive = true
dateTextField.heightAnchor.constraint(equalToConstant: 80).isActive = true
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .short
dateTextField.text = formatter.string(from: datePicker.date)
}
@objc func dateSelected() {
if let datePicker = self.dateTextField.inputView as? UIDatePicker {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .short
self.dateTextField.text = dateFormatter.string(from: datePicker.date)
dateTextField.text = "\(datePicker.date)"
}
self.dateTextField.resignFirstResponder()
}
但如果我关闭 datePicker,它仍然是 TextField 中的当前(旧)日期,而不是我设置的日期和时间。有人可以帮助我吗?提前致谢!
【问题讨论】:
标签: swift uitextfield uidatepicker