如何在UIDatePicker for iOS中阻止date

我在我的IOS应用程序中使用了一个Dateselect器,我想知道是否有可能阻止一些日子。 例如,我需要阻止一年中的所有星期一,这是可能的吗?

谢谢。

你唯一能做的就是添加一个自定义的UIPickerView,如注释中所描述的那样,或者实现一个为这个事件调用UIControlEventValueChanged的方法

然后检查有效周日的新值。 你可以得到周日:

 NSCalendar* calendar = [NSCalendar currentCalendar]; NSDateComponents* components = [calendar components:NSWeekdayCalendarUnit fromDate:[NSDate date]]; return [components weekday]; // 1 = Sunday, 2 = Monday, ... 

在滚轮上没有办法隐藏一些日子。

我不得不做类似的事情,找不到date的方法。 然而,我最终做的是,如果select了无效的date,它会弹跳到最近的有效date,类似于如果您设置最短date,并尝试selectdate之前的控制处理方式。

 -(void)init { datePicker = [[UIDatePicker alloc] initWithFrame:CGRectZero]; [datePicker setDatePickerMode:UIDatePickerModeDate]; [datePicker setMinimumDate: [NSDate date]]; [datePicker addTarget:self action:@selector(onDatePickerValueChanged:) forControlEvents:UIControlEventValueChanged]; } -(void)onDatePickerValueChanged:(UIDatePicker *)picker { // Work out which day of the week is currently selected. NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; NSDateComponents *comps = [gregorian components:NSWeekdayCalendarUnit fromDate:picker.date]; int weekday = [comps weekday]; // Bounce Sundays (weekday=1) forward a day if (weekday == 1) { [datePicker setDate:[NSDate dateWithTimeInterval:60*60*24*1 sinceDate:picker.date] animated: true]; } // Bounce Saturdays (weekday=7) back a day else if (weekday == 7) { [datePicker setDate:[NSDate dateWithTimeInterval:60*60*24*-1 sinceDate:picker.date] animated: true]; } }