iOS 6.1中的奇怪行为我已将日期选择器的最短日期设置为当前日期
NSDate *currentTime = [NSDate date];
[picker setMinimumDate:currentTime];
但是当我运行应用程序时,我可以滚动到过去的日期,虽然未选中,但选择器不会跳回到当前日期。它仅在iOS 6.1版本中发生,并且在休息选择器中表现正常。
答案 0 :(得分:8)
我遇到了和你一样的问题并且只是手动设置了日期到最大日期(在这种情况下我将限制设置为当前日期):
- (IBAction)pickerValueChanged:(id)sender {
dispatch_async(dispatch_get_main_queue(), ^{
UIDatePicker *datePicker = (UIDatePicker *)sender;
if ([self.datePicker.date compare:[NSDate date]] == NSOrderedDescending) {
datePicker.date = [NSDate date];
}
});
}
当日期选择器的日期值更改时,会触发此功能。您可以在此处设置最大值或最小值。
答案 1 :(得分:2)
您必须设置最小和最大日期,如:
NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDate *currentDate = [NSDate date];
NSDateComponents *comps = [[[NSDateComponents alloc] init] autorelease];
NSDate *minDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0];
[datePicker setMinimumDate:minDate];
答案 2 :(得分:2)
尝试此代码
NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDate *currentDate = [NSDate date];
NSDateComponents *comps = [[[NSDateComponents alloc] init] autorelease];
[comps setYear:30];
NSDate *maxDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0];
[comps setYear:-30];
NSDate *minDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0];
[datePicker setMaximumDate:maxDate];
[datePicker setMinimumDate:minDate];
答案 3 :(得分:1)
该属性是NSDate对象或nil(默认值),表示没有最大日期。此属性以及minimumDate属性允许您指定有效的日期范围。如果最小日期值大于最大日期值,则忽略这两个属性。倒数计时器模式(UIDatePickerModeCountDownTimer)中也会忽略最小和最大日期。
尝试同时设置有效的最短和最长日期。 它对我有用。