Я столкнулся с странным эффектом, который наверняка выглядит как ошибка в iOS7, но часто в прошлом, когда я думал, что нашел ошибку в API Apple, это оказалось моим собственным недоразумением.
У меня есть UIDatePicker с datePickerMode = UIDatePickerModeCountDownTimer и minuteInterval = 5. Я инициализирую продолжительность до 1 часа и представляю ее пользователю, где он отображается как двухстоечный сборщик с часами и минутами. (Все идет нормально.)
Пользователь думает "20 минут" и поэтому прокручивает столбец "Час" до 0. В этот момент сборщик читает 0 часов и 0 минут, а iOS7 не крут с этим, поэтому он автоматически прокручивает минутное колесо до 5. My UIControlEventValueChanged обработчик получает вызов, а countDownDuration - 5 минут. (Все еще хорош.)
Теперь пользователь захватывает минутное колесо и перетаскивает его на 20. И... мой обработчик UIControlEventValueChanged не вызван. (Плохо.)
Если в этом случае у меня есть какое-то другое событие в пользовательском интерфейсе, выберите значение dateDuration. 20. Я не знал, что пользователь изменил его, на момент его изменения. Это очень повторяемо: это всегда происходит при первом изменении ПОСЛЕ того, как сборщик отказывается установить 0 (продвигаясь до 5 минут).
Обратите внимание, что это в iOS7; он не встречается в iOS6 (возможно, потому, что сборщик имеет идеальное содержание, которое должно быть установлено на 0 минут).
Итак... я что-то упустил? Или это настоящая ошибка в iOS7? И в последнем случае, кто-нибудь знает обход лучше, чем когда-либо таймер периодически проверять текущий интервал?