ios – 第一次更改值时不会触发UIDatePicker的值更改事件

参见英文答案 >
UIDatePicker bug? UIControlEventValueChanged after hitting minimum internal                                    7个

我使用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,则第一次更改值时将触发该事件.

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

谢谢.

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

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

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