我遇到了一个奇怪的效果,它看起来确实像是 iOS7 中的一个错误——但在过去,当我经常认为我在 Apple 的 API 中发现了一个错误时,结果证明这是我自己的误解。
我有一个带有 datePickerMode = UIDatePickerModeCountDownTimer 和 minuteInterval = 5 的 UIDatePicker。我将持续时间初始化为 1 小时,并将其呈现给用户,它显示为带有小时和分钟的两列选择器。(到目前为止,一切都很好。)
用户正在考虑“20 分钟”,因此将 Hour 列滚动到 0。此时选择器读取 0 小时和 0 分钟,而 iOS7 对此并不酷,因此它会自动将分钟轮滚动到 5。我的 UIControlEventValueChanged处理程序被调用,并且 countDownDuration 读取 5 分钟。(还好。)
现在用户抓住分钟轮并将其拖到 20。并且...我的 UIControlEventValueChanged 处理程序没有被调用。(坏的。)
如果我在 UI 中有其他事件,此时检查日期选择器,我确实看到 countDownDuration 设置为 20。但我无法知道用户更改了它,此时它已更改。这是非常可重复的:它总是发生在选择器拒绝设置为 0 之后的第一次更改(提前到 5 分钟)。
请注意,这是在 iOS7 中;它不会发生在 iOS6 中(可能是因为那里的选择器完全可以设置为 0 分钟)。
所以......我在这里错过了什么吗?或者这是iOS7中的真正错误?在后一种情况下,有没有人知道比让一些计时器定期检查当前间隔更好的解决方法?