iOS UIDatePicker设置最大日期

iOS UIDatePicker设置最大日期,ios,uidatepicker,Ios,Uidatepicker,我在试图限制日期时遇到了问题。将日期设置为self.datePicker.maximumDate=[NSDate-date]现在之后的日期仅为灰色,但允许用户选择此最大日期之后的日期 因此,当选择器值更改时,我会比较所选日期(如果大于当前日期),然后编辑它 如果我同时使用这两种解决方案,我会有奇怪的行为,有什么想法吗? - (IBAction)pickerValueChanged:(id)sender { dispatch_async(dispatch_get_main_queue()

我在试图限制日期时遇到了问题。将日期设置为self.datePicker.maximumDate=[NSDate-date]现在之后的日期仅为灰色,但允许用户选择此最大日期之后的日期

因此,当选择器值更改时,我会比较所选日期(如果大于当前日期),然后编辑它

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

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

    });
}
当日期选择器中的日期值发生更改时,将触发此功能。如果我设定了最短和最长的日期,我会有一种奇怪的行为有什么想法吗?

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

    });
}
编辑:

  • 不设置self.datePicker.maximumDate=[NSDate-date]
  • 两者都有

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

下面是另一个stackover flow链接


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

下面是另一个stackover flow链接


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

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

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

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

您可以用xcode或编程方式设置最大日期

1.通过编程,您可以使用下面的代码行设置选择器的最大日期

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

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

您可以在xcode中设置最长日期,也可以通过编程方式设置

1.通过编程,您可以使用下面的代码行设置选择器的最大日期

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


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

在何处设置self.datePicker.maximumDate=[NSDate date];在ViewController的viewDidLoad方法中,在何处设置self.datePicker.maximumDate=[NSDate date];在ViewController的viewDidLoad方法中,你说的不良行为是什么意思?进行屏幕录制,不超过10分钟。你说的不良行为是什么意思?进行屏幕录制,不超过10分钟。我不确定我是否理解你的第一条评论,我理解到“…完全理解”这是什么意思?与其他答案相比,这又有什么价值呢?当然其他答案已经提供了你的答案了吗?忘记我之前评论的最后一部分,事实上你的答案描述了正在发生的事情,增加了价值,因为其他答案什么都没有+就为了这个。我真的很震惊有人会在这里接受一些批评,通常你会留下一点负面的评论,这意味着一点有用的反馈,就像你刚刚杀了那里的母亲或什么的。很好的编码。我不确定我是否理解你的第一条评论,我理解到“…完全理解。”这一点是什么意思?与其他答案相比,这又有什么价值呢?当然其他答案已经提供了你的答案了吗?忘记我之前评论的最后一部分,事实上你的答案描述了正在发生的事情,增加了价值,因为其他答案什么都没有+就为了这个。我真的很震惊有人会在这里接受一些批评,通常你会留下一点负面的评论,这意味着一点有用的反馈,就像你刚刚杀了那里的母亲或什么的。很好的编码。我讨厌答案没有描述它在做什么,所以我给这个-1。答案应该包含描述的原因是,如果一个新手在寻找答案,他们可能不理解一篇只包含代码的帖子的实际功能。我讨厌那些没有提供描述的答案,所以我给出这个-1。答案应该包含描述的原因是,如果一个新手在寻找答案,他们可能不理解一篇只包含代码的帖子的实际功能。我讨厌那些没有提供描述的答案,所以我给出这个-1。答案应该包含描述的原因是,如果一个新手在寻找答案,他们可能不理解一篇只包含代码的帖子的实际功能。我讨厌那些没有提供描述的答案,所以我给出这个-1。答案应该包含描述的原因是,如果一个新手正在寻找答案,他们可能不理解一篇只包含代码的帖子的实际功能。