在iOS日期选择器中设置最小和最大月份,但应更新选择器视图

罗恩

在视图中选择日期字段时,将显示日期选择器。我想限制滚动,使其比当前月份少2个月,比当前月份多4个月。我见过类似的例子。例如:对于当前的11月,月份范围应为明年的9月-3月。

我测试了示例,但未成功。

// Configure date picker
- (void) initializeDatePicker {
    _datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 600, 160)];
    _datePicker.backgroundColor = [UIColor whiteColor];
    _datePicker.datePickerMode = UIDatePickerModeDate;
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDate *currentDate = [NSDate date];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setMonth:-2];
NSDate *minDate = [gregorian dateByAddingComponents:comps toDate:currentDate  options:0];
[comps setMonth:4];
NSDate *maxDate = [gregorian dateByAddingComponents:comps toDate:currentDate  options:0];

_datePicker.minimumDate = minDate;
_datePicker.maximumDate = maxDate;


[_datePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];
[_txfDateTextField setInputView:_datePicker];
selectedDate =[NSDate date];
}

更新:上面的代码更新日期选择器对象。但是,问题在于日期选择器视图中没有更改。对于上面的示例,我希望滚动条限制从明年9月到明年3月的滚动。这样,用户在滚动时不会感到不知所措。从更好的UX角度来看。

邓肯

好的,基于广泛的讨论,我现在了解到,目标是删除超出范围的月份。

您无法使用标准的日期选择器执行此操作。您将必须使用来构建自定义控件UIPickerView

简短的回答是:“不要那样做。”

如果您希望允许2个月后和4个月前:

如果您当前的日期是2016年11月:

有效月份为9月,2016年11月,10月,2016年12月以及2017年1月,2月和2017年3月。

因此,如果用户选择2016,则需要在9月,10月和11月填充月份选择器轮。然后,如果用户切换到2017年,则只需要重建一月,二月和三月的月轮。

但是,现在你没有使用日期选择器,您使用的是UIPickerView采取行动像一个日期选择器。

因此,除了根据当前年份重建月份微调器之外,您还必须管理设置日期选择器以显示当前所选年份和月份的有效日期。大多数月份有30或31天,但是2月呢?leap年呢?几百年了,那不是leap年?

另外,您正在构建一个看起来像日期选择器的控件,而某种(但不完全)像日期选择器的行为。

除了公历之外,您还要处理日历吗?希伯来语,阿拉伯语,中文日历怎么办?要使所有这些正确工作是您的负担。

苹果已经在可用性研究上花费了很多钱,并提出了一个效果很好的标准控件,并且确实处理了不同日历系统等的本地化。

简而言之,这是您希望陷入的兔子洞

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

反应日期选择器设置的最小和最大日期

来自分类Dev

如何在日期选择器对话框中设置最大日期和最小日期

来自分类Dev

如何在jQuery UI日期选择器中动态设置最小和最大日期

来自分类Dev

日期选择器和时间选择器-设置最大值和最小值

来自分类Dev

在materializecss日期选择器中设置最小日期

来自分类Dev

为什么我的最小和最大日期设置在我的日期选择器中不起作用?

来自分类Dev

如何在C#日期时间选择器中设置最大时间和最小时间

来自分类Dev

如何在C#日期时间选择器中设置最大时间和最小时间

来自分类Dev

在日期选择器中设置日期

来自分类Dev

在从另一个日期选择器中选择的日期选择器中设置最小日期

来自分类Dev

jQuery日期选择器仅选择月份和年份?

来自分类Dev

jQuery日期选择器仅选择月份和年份?

来自分类Dev

仅日期和月份的Android日期选择器

来自分类Dev

iOS中的日期选择器

来自分类Dev

在日期选择器中设置最大日期时可以选择将来的日期

来自分类Dev

仅流星日期选择器月份和年份

来自分类Dev

月份和年份的日期选择器不起作用

来自分类Dev

日期时间选择器:如何基于SQL数据库设置最小/最大日期

来自分类Dev

最大日期更改日期选择器中的铭记

来自分类Dev

淘汰赛绑定HTML日期选择器的最小值和最大值

来自分类Dev

淘汰赛绑定HTML日期选择器的最小值和最大值

来自分类Dev

在日期选择器集中显示时间最大时间和最小时间

来自分类Dev

离子框架中的月份和年份选择器

来自分类Dev

MaterialUI ReactJS中的月份和年份选择器

来自分类Dev

离子框架中的月份和年份选择器

来自分类Dev

设置日期选择器燃料的日期

来自分类Dev

在jQuery中显示特定于月份和年份的日期选择器

来自分类Dev

Vuetify从日期选择器组件中删除正文标题月份和年份元素

来自分类Dev

操作日期选择器视图

Related 相关文章

  1. 1

    反应日期选择器设置的最小和最大日期

  2. 2

    如何在日期选择器对话框中设置最大日期和最小日期

  3. 3

    如何在jQuery UI日期选择器中动态设置最小和最大日期

  4. 4

    日期选择器和时间选择器-设置最大值和最小值

  5. 5

    在materializecss日期选择器中设置最小日期

  6. 6

    为什么我的最小和最大日期设置在我的日期选择器中不起作用?

  7. 7

    如何在C#日期时间选择器中设置最大时间和最小时间

  8. 8

    如何在C#日期时间选择器中设置最大时间和最小时间

  9. 9

    在日期选择器中设置日期

  10. 10

    在从另一个日期选择器中选择的日期选择器中设置最小日期

  11. 11

    jQuery日期选择器仅选择月份和年份?

  12. 12

    jQuery日期选择器仅选择月份和年份?

  13. 13

    仅日期和月份的Android日期选择器

  14. 14

    iOS中的日期选择器

  15. 15

    在日期选择器中设置最大日期时可以选择将来的日期

  16. 16

    仅流星日期选择器月份和年份

  17. 17

    月份和年份的日期选择器不起作用

  18. 18

    日期时间选择器:如何基于SQL数据库设置最小/最大日期

  19. 19

    最大日期更改日期选择器中的铭记

  20. 20

    淘汰赛绑定HTML日期选择器的最小值和最大值

  21. 21

    淘汰赛绑定HTML日期选择器的最小值和最大值

  22. 22

    在日期选择器集中显示时间最大时间和最小时间

  23. 23

    离子框架中的月份和年份选择器

  24. 24

    MaterialUI ReactJS中的月份和年份选择器

  25. 25

    离子框架中的月份和年份选择器

  26. 26

    设置日期选择器燃料的日期

  27. 27

    在jQuery中显示特定于月份和年份的日期选择器

  28. 28

    Vuetify从日期选择器组件中删除正文标题月份和年份元素

  29. 29

    操作日期选择器视图

热门标签

归档