He *_*何一非 5 uidatepicker ios swift
我想问一下如何设置iOS Count Down Timer的最长时间?(例如,最多1小时30分钟)
倒计时器从UIDatePicker模式开始:

谢谢!
编辑:
有人说我必须设置最小/最大日期,我只是在故事板中设置它们但我没有看到任何区别:
(设置时间是我当地时间+ - 30分钟)

编辑:
来自Apple:
倒数计时器模式(UIDatePickerModeCountDownTimer)中也会忽略最小和最大日期.
无论如何他们这样做呢?
虽然Niko的解决方案有效,但缺点是小时数仍然很大.如果你想要实际限制显示的小时数,我为此目的构建了一个自定义选择器.它是一个子类,UIPickerView它在countDownTimer模式下复制UIDatePicker的功能,同时添加对set的支持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
};
Run Code Online (Sandbox Code Playgroud)
可在MIT许可下的GitHub上获得.博客文章在这里.
对于 UIDatePickerModeCountDownTimer 的情况,您可以以编程方式处理它
添加一个当 your 的值UIDatePicker发生变化时调用的事件。
Objective-C
[self.datePicker addTarget:self action:@selector(datePickedValueChanged:)
forControlEvents:UIControlEventValueChanged];
Run Code Online (Sandbox Code Playgroud)
迅速
self.datePicker.addTarget(self, action: Selector("datePickedValueChanged:"), forControlEvents: UIControlEvents.ValueChanged)
Run Code Online (Sandbox Code Playgroud)
然后,如果所选的值超出允许的选择范围,您可以将 DatePicker 设置为允许的最大值(或任何您想要的值)
Objective-C
- (void)datePickedValueChanged:(id)sender{
if (self.datePicker.countDownDuration > 5400.0f) { //5400 seconds = 1h30min
[self.datePicker setCountDownDuration: 60.0f]; //Defaults to 1 minute
}
}
Run Code Online (Sandbox Code Playgroud)
迅速
func datePickedValueChanged (sender: UIDatePicker) {
if (self.datePicker.countDownDuration > 5400) { //5400 seconds = 1h30min
self.datePicker.countDownDuration = 60.0; //Defaults to 1 minute
}
}
Run Code Online (Sandbox Code Playgroud)
-- 之前的回答:
我将之前的答案留给使用UIDatePickerDate 或 DateAndTime 模式的其他人,如果这可以帮助某些人
您可以设置 的最小和最大日期UIDatePicker。
这里用户不能选择当前时间之前的时间,只能选择提前 1 小时 30 分钟。
任何选择其他时间的尝试都会使系统UIDatePicker自动返回到允许的时间间隔。
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *currentDate = [NSDate date];
NSDateComponents *dateDelta = [[NSDateComponents alloc] init];
[dateDelta setDay:0];
[dateDelta setHour:1];
[dateDelta setMinute:30];
NSDate *maximumDate = [calendar dateByAddingComponents:dateDelta toDate:currentDate options:0];
[self.datePicker setMaximumDate:maximumDate];
[dateDelta setDay:0];
[dateDelta setHour:0];
[dateDelta setMinute:0];
NSDate *minimumDate = [calendar dateByAddingComponents:dateDelta toDate:currentDate options:0];
[self.datePicker setMinimumDate:minimumDate];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5454 次 |
| 最近记录: |