在 swift 2.2 中首次单击文本字段时不会打开日期选择器
Date picker does not open first click on textfield in swift 2.2
我的 datePicker
视图在第一次单击 textField 时无法打开。如果我第二次单击它,则会打开日期选择器视图。在这种情况下我很困惑。为什么第一次点击没有打开?如何在第一次点击 UITextField
时显示日期选择器视图?
我试过的代码:
@IBAction func datePick(sender: UITextField)
{
let datePickerView = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.Date
sender.inputView = datePickerView
datePickerView.addTarget(self, action: #selector(SendSMS.showDatePicker), forControlEvents: UIControlEvents.ValueChanged)
}
func showDatePicker(sender: UIDatePicker) {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let timeFormatter = NSDateFormatter()
timeFormatter.dateFormat = "HH:mm:SS"
timeField.text = timeFormatter.stringFromDate(sender.date)
dateField.text = dateFormatter.stringFromDate(sender.date)
}
输出:
尝试使用 UITextFieldDelegate
的委托方法,而不是使用 textField
设置操作。
func textFieldDidBeginEditing(textField: UITextField!) { //delegate method
if textField == dateField {
let datePickerView = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.Date
textField.inputView = datePickerView
datePickerView.addTarget(self, action: #selector(SendSMS.showDatePicker), forControlEvents: UIControlEvents.ValueChanged)
}
}
它也可以通过设置 TextField 操作事件来工作 Editing Did Begin
。如果您设置操作 Editing Did End
.
,它将不会第一次起作用
我的 datePicker
视图在第一次单击 textField 时无法打开。如果我第二次单击它,则会打开日期选择器视图。在这种情况下我很困惑。为什么第一次点击没有打开?如何在第一次点击 UITextField
时显示日期选择器视图?
我试过的代码:
@IBAction func datePick(sender: UITextField)
{
let datePickerView = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.Date
sender.inputView = datePickerView
datePickerView.addTarget(self, action: #selector(SendSMS.showDatePicker), forControlEvents: UIControlEvents.ValueChanged)
}
func showDatePicker(sender: UIDatePicker) {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let timeFormatter = NSDateFormatter()
timeFormatter.dateFormat = "HH:mm:SS"
timeField.text = timeFormatter.stringFromDate(sender.date)
dateField.text = dateFormatter.stringFromDate(sender.date)
}
输出:
尝试使用 UITextFieldDelegate
的委托方法,而不是使用 textField
设置操作。
func textFieldDidBeginEditing(textField: UITextField!) { //delegate method
if textField == dateField {
let datePickerView = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.Date
textField.inputView = datePickerView
datePickerView.addTarget(self, action: #selector(SendSMS.showDatePicker), forControlEvents: UIControlEvents.ValueChanged)
}
}
它也可以通过设置 TextField 操作事件来工作 Editing Did Begin
。如果您设置操作 Editing Did End
.