UIDatePicker restrict hours but not date

前端 未结 1 845
离开以前
离开以前 2020-12-21 10:00

I came across a situation where I needed to restrict a UIDatePicker\'s selected hour, but still allow free selection of the day. This would be useful if you wan

1条回答
  •  借酒劲吻你
    2020-12-21 10:39

    This particular example will not allow selection of times before 7:00am or after 9:59pm. Selection of an "invalid" time will immediately slide the UIDatePicker back to the closest valid time on the respective end of the spectrum (for example, selection of 10:02pm will immediately slide back to 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]];
        }
    }
    

    Edit: As @DuncanC suggested in the comments, feedback to the user should probably be included, such as a label saying "Only times between 7:00am and 9:59pm can be used"

    0 讨论(0)
提交回复
热议问题