ios – UIDatePicker限制小时但不限制日期

我遇到了一种情况,我需要限制UIDatePicker的选定小时,但仍允许自由选择当天.如果您希望允许用户在设置的营业时间内选择日期/时间,这将非常有用.通过警告用户他们的选择很糟糕,我发现了一些与我想做的事情很接近的事情,但实际上没有改变选择器上的日期,所以我想分享我的解决方案Q& A风格.

解决方法

此特定示例不允许选择上午7:00之前或下午9:59之后的时间.选择“无效”时间将立即将UIDatePicker滑回到相应光谱末端的最近有效时间(例如,选择10:02 pm将立即滑回到晚上9:59)
- (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之间的时间”

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...