Using a UIDatePicker instead of Keyboard for UITextField Issues

和自甴很熟 提交于 2019-12-23 11:51:30

问题


Hi I am trying to display a UIDatePicker instead of a keyboard whenever a UITextField is tapped so that the user can give a start and end time for an event. My code works but not well and not the way I want it to.

My first issue is that whenever you tap on one of the UITextField the UIDatePicker only come up the second time the UITextField is tapped. Otherwise it shows the original keyboard.

My second issue is that whenever the UIDatePicker is edited it only changes the UITextField whenever the UIDatePicker is edited. I need the UITextField to display the string in the UIDatePicker as soon as its opened so that the UITextField is up to date with what is going on the UIDatePicker.

Here is my current code:

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)
}

Can anyone help me? Thanks


回答1:


Why you are changing keyboard by the action!

Just add your code in 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)

and remove that methods like

@IBAction func


来源:https://stackoverflow.com/questions/32152985/using-a-uidatepicker-instead-of-keyboard-for-uitextfield-issues

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!