首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用UIDatePicker - time模式- swift设置最大时间

使用UIDatePicker - time模式- swift设置最大时间
EN

Stack Overflow用户
提问于 2015-07-15 21:19:41
回答 2查看 3.2K关注 0票数 3

是否可以在CountDownTimer模式下自定义UIDatePicker,使其不显示超出某一特定点的选取器值?例如,如果我将其设置为2小时,它将仅向下显示2小时。

目前,我已经尝试了一些技术,但我唯一成功的就是使用maximumDate将倒计时点设置为某个特定的值。

代码语言:javascript
运行
复制
self.datePickerView.datePickerMode = UIDatePickerMode.CountDownTimer

//For calculating a date with +30 mins
    let calendar = NSCalendar.currentCalendar()
    let date = calendar.dateByAddingUnit(.CalendarUnitMinute, value: 30, toDate: NSDate(), options: nil)
    println("30+Mins \(date)")

//Interval for countdownDuration
    let myTimeInterval = NSTimeInterval(timeOffset * 60)
    println("myTimeInterval \(myTimeInterval)")

//Tried Methods - countDownDuration sets it to a certain points(in seconds)
        self.datePickerView.countDownDuration = myTimeInterval
        self.datePickerView.maximumDate = date // This doesn't seem to do anything when in using UIDatePickerMode.CountDownTimer

我认为一种可能的方法是只使用UIPicker。

EN

回答 2

Stack Overflow用户

发布于 2016-12-05 16:02:35

正如您所说的-可以使用UIPickerView自己完成这项工作。这正是我所做的:我为此构建了一个自定义的UIPickerView子类。它在countDownTimer模式下复制了UIDatePicker的功能,同时增加了对设置maxTimeInterval的支持。

您可以这样使用它:

代码语言:javascript
运行
复制
GSTimeIntervalPicker *picker = [[GSTimeIntervalPicker alloc] init];
picker.maxTimeInterval = (3600 * 3);    // set the limit
picker.minuteInterval = 5;              // the step. Default is 1 min.
picker.timeInterval = (3600 * 1.5);     // 1 h 30 minutes
picker.onTimeIntervalChanged = ^(NSTimeInterval newTimeInterval) {
    // Use the value
};

在麻省理工学院许可下提供on GitHub。博客文章here。很抱歉,它不在Swift中,您必须自己转换它。

票数 1
EN

Stack Overflow用户

发布于 2015-08-08 21:56:44

第一件事:你不需要日历来给一个给定的日期增加30分钟。

有一个构造函数可以在一个步骤中完成您想要的操作:

代码语言:javascript
运行
复制
NSDate(timeInterval: NSTimeInterval, sinceDate: NSDate)
NSDate(timeIntervalSinceNow: NSTimeInterval)

对我来说,

代码语言:javascript
运行
复制
self.datePickerView.maximumDate = date

显示灰显的未来日期/时间,因此用户有一些视觉提示。

这并不意味着,如果没有额外的代码,将来的日期/时间是不可选的。

用户可以选择灰显的时间。您可以签入您的处理程序,当选择某个未来日期时,您只需设置

代码语言:javascript
运行
复制
self.datePickerView.date = date 

只要不调用resignFirstResponder(),日期选择器就会很好地滚动到现在(或任何其他选择的时间)。因此,用户不能使用该附加代码选择将来的时间。

我希望这足够接近你所需要的。未来是灰显的,而不是不可见的,并且在处理程序中添加一点额外的代码是不可选的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31431574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档