【问题标题】:UIDatePicker constraints not working in deviceUIDatePicker 约束在设备中不起作用
【发布时间】:2013-09-26 09:45:14
【问题描述】:

我在我的项目中使用 UIDatePicker 控件。在 xib 文件中添加了 UIDatePicker,并以编程方式将 minimumDate、maximumDate 等约束设置为 datePicker。这在模拟器中运行良好,但在设备中我可以在 datePicker 中选择任何日期。

示例代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.datePicker setMinimumDate:[NSDate date]];
    [self.datePicker setMaximumDate:[[NSDate date] dateByAddingTimeInterval:3*24*60*60]];
}

截图:

注意:我正在研究 xcode5 - DP6。

提前致谢。

【问题讨论】:

  • 您在代码的哪一部分设置了最小和最大日期?
  • 一切正常,请检查您的 IBOutlet 连接。
  • 我的问题更新了,请检查。
  • @Sunny,在模拟器中它工作正常,但在设备中却不行。屏幕是从设备上截取的,即使我无法从模拟器中截取屏幕截图,因为它不允许我在模拟器中选择上述日期。
  • 我检查了设备工作正常我使用的是 xcode4.5

标签: ios objective-c uidatepicker


【解决方案1】:

UIDatePicker 上为UIControlEventValueChanged 事件添加一个操作并实施检查以查看所选日期是否大于最大日期或小于最小日期并相应地设置日期,如下所示:

- (IBAction)dateValueChanged:(id)sender
{
    NSTimeInterval date = [self.datePicker.date timeIntervalSince1970];
    NSTimeInterval maxmimumDate = [self.datePicker.maximumDate timeIntervalSince1970];
    NSTimeInterval minimumDate = [self.datePicker.minimumDate timeIntervalSince1970];

    if (date < minimumDate) {
        self.datePicker.date = self.datePicker.minimumDate;
    }

    if (date > maxmimumDate) {
        self.datePicker.date = self.datePicker.maximumDate;
    }

    // Use the selected date
    NSLog(@"%@", self.datePicker.date);
}

如果您选择超出范围的日期,这将导致UIDatePicker 滚动到最大/最小日期。

【讨论】:

  • 这是 valueChanged 事件中的自定义验证。但是,我们如何使用 UIDatePicker 的 minimumDate、maximumDate 属性来处理呢?
  • UIDatePicker 中似乎存在一个错误,随后尝试设置 minimumDate-maximumDate 范围之外的日期在它们应该失败时成功。上面的代码通过将所选日期强制为可接受日期范围的下限/上限来解决此错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-30
  • 2018-12-30
  • 2015-03-13
  • 2018-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多