如何在UIDatePicker中禁用无限滚动?

时间:2015-03-22 19:21:13

标签: ios uidatepicker

我正在实现一些带有日期选择的东西,结果发现Apple的UIDatePicker实现使用无限循环几天和几个月。 用简单的英语来说,不可能达到1的上限,也不可能达到12或31的底部。它只是永远地循环开始两个集合再次使用1,依此类推,这是从我非常主观的角度来看这个UI组件的最愚蠢的想法。

使用此选择器的UX使得旋转速度非常快,因此实际上很难找到正确的数字。如果它是11月,我需要2月,那么用快速顶点击中顶部要快得多。滑动,然后稍微向下移动到2月,我宁愿做一些不稳定的动作,直到我发现2月在无限集中。

看着班级参考,我似乎找不到任何东西。它也不是超类 似乎有一个合适的财产。

任何appstore安全的想法(例如自定义实现......作为最后的手段)?

1 个答案:

答案 0 :(得分:0)

我过去在另一个stackoverflow问题中使用过以下代码并且效果很好。

How to set Minimum time to appear as default in UIDatepicker everytime

int startHour = 7;
int endHour = 11;

NSDate *date1 = [NSDate date];
NSCalendar *gregorian = [[NSCalendar      alloc] initWithCalendarIdentifier: NSGregorianCalendar];
 NSDateComponents *components = [gregorian components: NSUIntegerMax fromDate: date1];
[components setHour: startHour];
[components setMinute: 0];
[components setSecond: 0];
NSDate *startDate = [gregorian dateFromComponents: components];

[components setHour: endHour];
[components setMinute: 0];
[components setSecond: 0];
NSDate *endDate = [gregorian dateFromComponents: components];

[userTimePicker setDatePickerMode:UIDatePickerModeTime];
[userTimePicker setMinimumDate:startDate];
[userTimePicker setMaximumDate:endDate];
[userTimePicker setDate:startDate animated:YES];
[userTimePicker reloadInputViews];