Swift UIDatePicker 不显示初始值
Swift UIDatePicker doesn't show initial value
我有一个 UITextField
,它使用 UIDatePicker
作为输入法:
lazy var starttime_text_field: UITextField = {
let text_field = UITextField()
...
let date_picker = UIDatePicker()
date_picker.minimumDate = Date()
date_picker.maximumDate = Calendar.current.date(byAdding: .day, value: 1, to: Date())
date_picker.datePickerMode = .dateAndTime
date_picker.addTarget(self, action: #selector(handleStarttimePicker(sender:)), for: .valueChanged)
text_field.inputView = date_picker
...
return text_field
}()
当我 select 文本字段时,我希望选择器中显示的第一个日期显示为文本字段的文本。然而,这并没有发生;只有当我滚动选择器时,选择器的值才会出现在文本字段中。我已经尝试将 .valueChanged
更改为其他内容,但我仍然无法正常工作。我怎样才能实现这种行为?谢谢。
您可能应该使用文本字段委托方法在编辑开始和结束时设置值。
- (void)textFieldDidBeginEditing:(UITextField *)textField;
- (void)textFieldDidEndEditing:(UITextField *)textField;
选择器的事件仅在值更改时触发。因此 default/selected 值必须在设置文本字段或编辑模式更改时更新。
我有一个 UITextField
,它使用 UIDatePicker
作为输入法:
lazy var starttime_text_field: UITextField = {
let text_field = UITextField()
...
let date_picker = UIDatePicker()
date_picker.minimumDate = Date()
date_picker.maximumDate = Calendar.current.date(byAdding: .day, value: 1, to: Date())
date_picker.datePickerMode = .dateAndTime
date_picker.addTarget(self, action: #selector(handleStarttimePicker(sender:)), for: .valueChanged)
text_field.inputView = date_picker
...
return text_field
}()
当我 select 文本字段时,我希望选择器中显示的第一个日期显示为文本字段的文本。然而,这并没有发生;只有当我滚动选择器时,选择器的值才会出现在文本字段中。我已经尝试将 .valueChanged
更改为其他内容,但我仍然无法正常工作。我怎样才能实现这种行为?谢谢。
您可能应该使用文本字段委托方法在编辑开始和结束时设置值。
- (void)textFieldDidBeginEditing:(UITextField *)textField;
- (void)textFieldDidEndEditing:(UITextField *)textField;
选择器的事件仅在值更改时触发。因此 default/selected 值必须在设置文本字段或编辑模式更改时更新。