使用UIDatePicker替代键盘输入UITextField的问题

5

嗨,我正在尝试在用户点击UITextField以便为事件提供开始和结束时间时,显示UIDatePicker而不是键盘。我的代码可以运行,但效果不好,也不是我想要的。

我的第一个问题是每当您点击其中一个UITextField时,UIDatePicker仅在第二次单击UITextField时出现。否则它会显示原始键盘。

我的第二个问题是每当编辑UIDatePicker时,仅在编辑UIDatePicker时才更改UITextField。我需要UITextField在打开UIDatePicker时立即显示UIDatePicker中的字符串,以使UITextFieldUIDatePicker的内容保持同步。

这是我的当前代码:

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

有人能帮我吗?谢谢。


请看这个链接:https://dev59.com/mG445IYBdhLWcg3wnrgi - Saurabh Prajapati
@SaurabhPrajapati 那个方法可以用,但我不太懂 Objective-C。还是谢谢你。 - Trip Phillips
1个回答

7
为什么你要通过动作来更换键盘!
只需在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)

并且移除那些方法,例如

@IBAction func

@TripPhillips 你把textfield里的action移除了吗? - Ashish Kakkad
@TripPhillips 这很完美。如果你正在使用模拟器,有时键盘不会弹出来。因此,请按 COMMAND+K。 - Ashish Kakkad
@TripPhillips 我已经更新了答案。希望它能帮到你。 - Ashish Kakkad
1
我正在使用我的iPhone。今晚我无法解决问题,但希望明天如果代码完美的话就能解决。感谢您的帮助。我会在解决后通知您。 - Trip Phillips
好的,我在一个新项目中尝试了一下,它可以工作,现在我需要弄清楚如何在我的项目中实现它。 - Trip Phillips
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接