2013-03-20 157 views
5

奇怪的行为在IOS 6.1我已经设置最小日期为当前日期为我的日期选择器这样日期选择器滚动到过去的日期,即使最小的日期设置为当前日期

NSDate *currentTime = [NSDate date]; 
[picker setMinimumDate:currentTime]; 

enter image description here

但是,当我运行应用程序,我可以滚动到过去的日期,虽然它没有选择,选择器不会跳回到当前日期。它仅在iOS 6.1版本中发生,而其余选取器正常运行。

+0

查看我编辑的答案.. – moosa0709 2013-03-20 07:51:48

回答

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

    }); 
} 

此功能在来自日期选择器的日期值确实为变化。您可以在此设置最大值或最小值。

+0

这是一个问题或答案?如果您有问题,请提出一个新问题http://stackoverflow.com/questions/ask – nhahtdh 2013-05-06 19:00:20

+0

回答一个奖金问题;) – 2013-05-07 06:18:38

+0

请删除您的“奖金”问题(您将不会得到任何答案,并且它混淆了实际的答案) - 如果你真的想要你的问题得到解答,请提出一个新问题。 – nhahtdh 2013-05-07 06:20:13

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]; 
+0

还是同样的问题的人。能够滚动到旧日期。 – 2013-03-20 07:37:48

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]; 
+0

真的,你会得到像你的答案方式currunt日期..? – 2013-03-20 07:12:57

+0

@Prem我试过你的解决方案,它不起作用。这是iOS 6.1中的错误吗? – 2013-03-20 07:20:34

+1

http://code4app.net/ios/Local-Notifier/4fb5e7c06803fa3a7f000000我从这个链接的示例..教我如果有任何错误..thks – moosa0709 2013-03-20 07:20:44

1

该属性是一个NSDate对象或零(默认),这意味着没有最大日期。此属性以及minimumDate属性可让您指定有效的日期范围。如果最小日期值大于最大日期值,则两个属性均被忽略。在倒数计时器模式(UIDatePickerModeCountDownTimer)中,最小和最大日期也被忽略。

尝试设置有效的最小和最大日期。 它适合我。

相关问题