1

我在尝试限制日期时遇到了问题。通过像这样设置日期self.datePicker.maximumDate = [NSDate date];,现在之后的日期只是灰色的,但允许用户选择这个最大日期之后的日期。

So When the picker value changed I compare the selected date if up than the current date I edit it.

如果我同时使用这两种解决方案,我的行为会很奇怪,有什么想法吗?

- (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];
        }

    });
}

当日期选择器中的日期值发生变化时触发此函数。如果我设置最小和最大日期,我会得到一个奇怪的行为。任何想法?

编辑:

4

5 回答 5

4

您可以在 xcode 中或以编程方式设置最大日期。

1. 以编程方式,您可以使用以下代码行设置选择器最大日期。

[self.yourPickerView setMaximumDate: [NSDate date]];

这行代码会将当前日期设置为可以在选择器中选择的最大日期。

于 2015-11-24T09:28:52.883 回答
2

是的,您可以使用 .xib 和选择器设置来设置最小和最大日期

在此处输入图像描述

于 2013-05-07T07:09:31.623 回答
1

是的,您可以将最大日期和最小日期设置为 UIDatePickerView

下面是另一个stackover流程链接

UIDatePicker,根据今天的日期设置最大和最小日期

于 2013-05-07T06:37:29.097 回答
-1
- (IBAction) datePickerChanged:(id)sender {
// When `setDate:` is called, if the passed date argument exactly matches the Picker's date property's value, the Picker will do nothing. So, offset the passed date argument by one second, ensuring the Picker scrolls every time.
NSDate* oneSecondAfterPickersDate = [picker.date dateByAddingTimeInterval:1] ;
if ( [picker.date compare:picker.minimumDate] == NSOrderedSame ) {
    NSLog(@"date is at or below the minimum") ;
    picker.date = oneSecondAfterPickersDate ;
}
else if ( [picker.date compare:picker.maximumDate] == NSOrderedSame ) {
    NSLog(@"date is at or above the maximum") ;
    picker.date = oneSecondAfterPickersDate ;
    }
}
于 2013-08-09T08:41:03.650 回答
-1
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *currentDate = [NSDate date];
NSDateComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:currentDate];
NSInteger year = [components year];

NSDateFormatter* formatter1 = [[NSDateFormatter alloc] init];
[formatter1 setDateFormat:@"yyyy-MM-dd"];
NSString *dateString = [NSString stringWithFormat:@"%ld-12-31",(long)year];
NSDate *maxDate = [formatter1 dateFromString:dateString];
[self.dobPickerView setMaximumDate: maxDate];
于 2015-08-18T06:22:30.083 回答