ios - UIDatePicker 限制时间但不限制日期

标签 ios objective-c uidatepicker

我遇到过这样一种情况,我需要限制 UIDatePicker 的选定时间,但仍允许自由选择日期。如果您希望允许用户在设定的工作时间内选择日期/时间,这将很有用。通过提醒用户他们的选择有误,我发现了一些接近我想要做的事情,但实际上并没有更改选择器上的日期,所以我想分享我的解决方案问答式。

最佳答案

此特定示例不允许选择早上 7:00 之前或晚上 9:59 之后的时间。选择“无效”时间将立即将 UIDatePicker 滑回频谱各自末端最接近的有效时间(例如,选择 10:02pm 将立即滑回 9:59pm)

- (void)datePickerChanged
{
    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit fromDate:datePicker.date];

    if([components hour] < 7)
    {
        [components setHour:7];
        [components setMinute:0];
        [datePicker setDate:[[NSCalendar currentCalendar] dateFromComponents:components]];
    }
    else if([components hour] > 21)
    {
        [components setHour:21];
        [components setMinute:59];
        [datePicker setDate:[[NSCalendar currentCalendar] dateFromComponents:components]];
    }
}

编辑:正如@DuncanC 在评论中建议的那样,可能应该包括对用户的反馈,例如标签上写着“只能使用上午 7:00 到晚上 9:59 之间的时间”

关于ios - UIDatePicker 限制时间但不限制日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23398366/

相关文章:

ios - 在 UIView 中包含 UIViewController

ios - 在 iOS SDK (Swift 3.0) 中,使用 "queryOrdered/queryEqual"的 Firebase 数据库查询未按预期工作

ios - 关于可本地化推送负载内容的一些问题

ios - 如何从 latest_receipt_info 列表中获取最新收据?

ios - 无法在segue中设置UIDatePicker的日期

iphone - 如何修改UIDatePicker的内容?

javascript - 如何在 jQuery-UI Datepicker 中重新加载数据?

ios - 在选择器中传递参数(UIMenuController)

ios - 带有垂直标题的 UICollectionView 水平滚动

ios - 序列中可以有 if 语句吗?