Събитието за промяна на стойността на 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, събитието ще се задейства, когато стойността се промени за първи път.

Трябва да персонализирам UIDatePickerMode на CountDownTimer. Също така трябва да се уверя, че събитието се задейства, когато стойността се промени за първи път. Как мога да поправя този проблем?

Благодаря ти.


person user4708651    schedule 24.03.2015    source източник


Отговори (1)


Това може да е грешка с UIDatePicker в режим CountDownTimer (може да не задава стойност по подразбиране, за да разпознае „промяната“, но не е 100% сигурно).

За да заобиколите това, можете да направите следното във вашия viewDidLoad метод:

 dispatch_async(dispatch_get_main_queue(), ^{
      datePicker.countDownDuration = (NSTimeInterval) duration;
 });
person chrissukhram    schedule 24.03.2015
comment
Благодаря ви за отговора. След като зададох стойност по подразбиране, този проблем все още съществува. Току-що актуализирах кода, който задава стойност по подразбиране във въпроса. - person user4708651; 24.03.2015
comment
Проверете актуализацията. Този метод може да работи по-добре за вас. Не мога да тествам, тъй като не съм близо до моя Mac, съжалявам за това. - person chrissukhram; 24.03.2015
comment
Благодаря ви за отговора. - person user4708651; 26.03.2015