是否可以在CountDownTimer
模式下自定义UIDatePicker,使其不显示超出某一特定点的选取器值?例如,如果我将其设置为2小时,它将仅向下显示2小时。
目前,我已经尝试了一些技术,但我唯一成功的就是使用maximumDate
将倒计时点设置为某个特定的值。
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。
发布于 2016-12-05 16:02:35
正如您所说的-可以使用UIPickerView自己完成这项工作。这正是我所做的:我为此构建了一个自定义的UIPickerView
子类。它在countDownTimer模式下复制了UIDatePicker的功能,同时增加了对设置maxTimeInterval
的支持。
您可以这样使用它:
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
};
发布于 2015-08-08 21:56:44
第一件事:你不需要日历来给一个给定的日期增加30分钟。
有一个构造函数可以在一个步骤中完成您想要的操作:
NSDate(timeInterval: NSTimeInterval, sinceDate: NSDate)
NSDate(timeIntervalSinceNow: NSTimeInterval)
对我来说,
self.datePickerView.maximumDate = date
显示灰显的未来日期/时间,因此用户有一些视觉提示。
这并不意味着,如果没有额外的代码,将来的日期/时间是不可选的。
用户可以选择灰显的时间。您可以签入您的处理程序,当选择某个未来日期时,您只需设置
self.datePickerView.date = date
只要不调用resignFirstResponder(),日期选择器就会很好地滚动到现在(或任何其他选择的时间)。因此,用户不能使用该附加代码选择将来的时间。
我希望这足够接近你所需要的。未来是灰显的,而不是不可见的,并且在处理程序中添加一点额外的代码是不可选的。
https://stackoverflow.com/questions/31431574
复制相似问题