对UITextField问题使用UIDatePicker而不是Keyboard

Tri*_*ips 4 keyboard uidatepicker uitextfield ios swift

嗨我试图在点击时显示UIDatePicker键盘而不是键盘,UITextField以便用户可以给出事件的开始和结束时间.我的代码工作但不是很好,而不是我想要的方式.

我的第一个问题是,每当你点击其中一个UITextField时,UIDatePicker只有第二次UITextField点击它才会出现.否则它会显示原始键盘.

我的第二个问题是,每当UIDatePicker被编辑它只会改变UITextField每当UIDatePicker被编辑.我需要在UITextField打开字符串时UIDatePicker立即显示字符串,这样就可以了解字符串的UITextField最新信息UIDatePicker.

这是我目前的代码:

override func viewDidLoad() {
super.viewDidLoad()
 var datePickerView  : UIDatePicker = UIDatePicker()
    datePickerView.datePickerMode = UIDatePickerMode.Time
    StartTimeTextField.inputView = datePickerView
    datePickerView.addTarget(self, action:
    Selector("handleDatePicker:"), forControlEvents: UIControlEvents.ValueChanged)

    var datePickerView2  : UIDatePicker = UIDatePicker()
    datePickerView2.datePickerMode = UIDatePickerMode.Time
    EndTimeTextField.inputView = datePickerView2
    datePickerView2.addTarget(self, action: Selector("handleDatePicker2:"), forControlEvents: UIControlEvents.ValueChanged)
    }

func handleDatePicker(sender: UIDatePicker) {
    var dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "hh mm am pm"
    StartTimeTextField.text = dateFormatter.stringFromDate(sender.date)
}



func handleDatePicker2(sender: UIDatePicker) {
    var dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "hh mm am pm"
    EndTimeTextField.text = dateFormatter.stringFromDate(sender.date)
}
Run Code Online (Sandbox Code Playgroud)

谁能帮我?谢谢

Ash*_*kad 6

为什么要通过动作更改键盘!

只需添加您的代码viewDidLoad:

var datePickerView  : UIDatePicker = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.Time
StartTimeTextField.inputView = datePickerView
datePickerView.addTarget(self, action: Selector("handleDatePicker:"), forControlEvents: UIControlEvents.ValueChanged)

var datePickerView  : UIDatePicker = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.Time
EndTimeTextField.inputView = datePickerView
datePickerView.addTarget(self, action: Selector("handleDatePicker2:"), forControlEvents: UIControlEvents.ValueChanged)
Run Code Online (Sandbox Code Playgroud)

并删除那些方法

@IBAction func
Run Code Online (Sandbox Code Playgroud)