iOS日期选择器:如何锁定无效日期?
最近我一直在为最长/最短日期而挣扎,老实说,我不知道我错过了什么。我搜索了很多,似乎没有人抱怨。(我不是说设置最大/最小日期,因为这些只能使无效日期显示为灰色) 以下是我迄今为止所做的工作:iOS日期选择器:如何锁定无效日期?,ios,locking,uidatepicker,minimum,Ios,Locking,Uidatepicker,Minimum,最近我一直在为最长/最短日期而挣扎,老实说,我不知道我错过了什么。我搜索了很多,似乎没有人抱怨。(我不是说设置最大/最小日期,因为这些只能使无效日期显示为灰色) 以下是我迄今为止所做的工作: [myDatePicker addTarget:self action:@selector(disableDate) forControlEvents:UIControlEventValueChanged]; 然后,在disableDate,我有这样的事情: if ([myDatePicker.d
[myDatePicker addTarget:self action:@selector(disableDate) forControlEvents:UIControlEventValueChanged];
然后,在disableDate,我有这样的事情:
if ([myDatePicker.date compare:[NSDate date]] == NSOrderedDescending) {
MyDatePicker.date = [NSDate date];
}
(或升序,取决于我要禁用的日期)
问题是:它工作得很好,但只有一次。换句话说:只要我打开视图并尝试选择,例如2007,它就会滚动回2013。伟大的但就在那之后,如果我试图滚动到任何无效的日期(包括2007年),它将不会再向后滚动,直到我重新打开我的视图。
我觉得我错过了一些简单的东西,但我不知道是什么
提前多谢
PS:我只是想提一下,我已经把这个放在了disableDate里面了
NSLog(@"Value changed");
只是为了确保每次我滚动datepicker时它都在调用该方法,是的,它正在工作
PS2:我也试过同样的方法,但是使用了
- (IBAction)datePickerValueChanged:(id) sender
相反,它具有完全相同的行为。因此,为了“重置”UIDatePicker
您可以使用reloadInputViews
方法(因为UIDatePicker
是UIResponder
的子类)
编辑:在设置日期后使用
[myDatePicker reloadInputViews]拼写Tyr;
事实上是这样!我以前犯过一个错误!非常感谢!!我添加了我的评论作为答案。如果你想,你可以将其标记为接受答案;)