【发布时间】:2015-12-23 09:00:56
【问题描述】:
我的UIDatePicker 有两个问题:
我必须在我的
UITextField上点按两次才能显示UIDatePicker-
当我连续选择某项时,例如,
李>UIDatePicker即将关闭的那一天,我认为最好阻止它并设置一个“完成”按钮
代码:
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func tfDateNaissanceEditing(sender: UITextField) {
let datePickerView:UIDatePicker = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.Date
sender.inputView = datePickerView
datePickerView.addTarget(self, action: Selector("datePickerValueChanged:"), forControlEvents: UIControlEvents.ValueChanged)
tfDateNaissance.resignFirstResponder()
}
func datePickerValueChanged(sender: UIDatePicker) {
let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle
dateFormatter.timeStyle = NSDateFormatterStyle.NoStyle
tfDateNaissance.text = dateFormatter.stringFromDate(sender.date)
tfDateNaissance.resignFirstResponder()
}
【问题讨论】:
-
resignFirstResponder()是关闭键盘的方法(在本例中为日期选择器)。您必须手动添加“完成”按钮,例如查看此链接:stackoverflow.com/questions/20192303/… -
@aramusss 谢谢,您的链接使用的是 Objective-C 语言
-
@Ben,这是真的。虽然你选择使用 Swift,但是对于 iOS 开发者来说,理解 Obj-C 代码很重要。
-
@Ben 如果您将
tfDateNaissance.resignFirstResponder()留在您的datePickerValueChanged method中,则选择器将在值更改后立即关闭。我个人使用完成按钮向选择器添加了一个工具栏来处理resignFirstResponder。检查答案。希望对您有所帮助。
标签: ios iphone swift uitextfield uidatepicker