第一次更改值时,UIDatePicker的值更改事件未被触发

时间:2015-03-24 17:56:46

标签: ios iphone ipad swift uidatepicker

我使用Swift开发iOS应用程序。我在故事板上有一个文本字段,需要将UIDatePicker设置为其输入视图。以下是我的代码。

@IBOutlet var textField: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()
    var datePicker: UIDatePicker = UIDatePicker()
    datePicker.datePickerMode = UIDatePickerMode.CountDownTimer
    var dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "HH:mm"
    datePicker.setDate(dateFormatter.dateFromString("01:00")!, animated: false)
    datePicker.addTarget(self, action: "datePickerValueChanged:", forControlEvents: UIControlEvents.ValueChanged)
    textField.inputView = datePicker
}

func datePickerValueChanged(sender: UIDatePicker) {
    println("Event is triggered.")
}

当我第一次运行应用并更改值时,ValueChanged事件未被触发。当我第二次更改值时,会触发事件。

如果我对代码datePicker.datePickerMode = UIDatePickerMode.CountDownTimer发表评论,则首次更改值时会触发该事件。

我需要自定义UIDatePickerModeCountDownTimer。我还需要确保在第一次更改值时触发事件。我该如何解决这个问题?

谢谢。

1 个答案:

答案 0 :(得分:2)

这可能是CountDownTimer模式下UIDatePicker的错误(它可能没有设置默认值来识别“更改”,但不是100%确定)。

要解决此问题,您可以使用viewDidLoad方法执行以下操作:

 dispatch_async(dispatch_get_main_queue(), ^{
      datePicker.countDownDuration = (NSTimeInterval) duration;
 });