【问题标题】:iOS UIDatePicker timezone causes disabled spinner(s)iOS UIDatePicker 时区导致禁用微调器
【发布时间】:2016-10-26 09:13:22
【问题描述】:

我有一个 UIDatePicker,我将 timezone 设置为 NSTimeZone(forSecondsFromGMT: seconds)。但由于某种原因,在我第一次设置新日期时,UIDatePicker 上的时间被禁用,但在我将模式切换回 .date 后,它又可以工作了。

我怎样才能使这个工作始终有效?如果我不设置 timezone 时间永远不会被禁用,但我需要设置时区。

这是我要设置的代码,newDate 是 NSDate,调整是秒。

        self.timePicker.timeZone = NSTimeZone(forSecondsFromGMT: adjustment)
        self.timePicker.setDate(newDate, animated: false)

禁用的微调器屏幕截图:

【问题讨论】:

  • 我也遇到了同样的问题,你解决了吗?或了解微调器禁用的原因?

标签: swift ios10 uidatepicker


【解决方案1】:

我遇到了同样的问题,看起来是由于使用的时区不是当前时区或选择器上设置的日历的时区。从 UIDatePicker.h 得到这个

open var timeZone: TimeZone? // 默认为零。使用当前时区或日历中的时区

通过在选择器上设置日历和时区来修复。

let cal = Calendar(identifier: .gregorian)
cal.timeZone = TimeZone(identifier: "PST")
self.timePicker.calendar = cal
self.timePicker.timeZone = cal.timeZone

【讨论】:

  • 在我的情况下,只需分配 .calendar 单独修复它。在分配日历后设置时区会导致微调器工作,但这些会在更新时自动恢复为以前的值。这是在 iOS 11.4 上测试的
猜你喜欢
  • 2013-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
  • 2011-08-24
  • 2012-09-19
  • 1970-01-01
相关资源
最近更新 更多