zoukankan      html  css  js  c++  java
  • UIDatePicker odd behavior when setting minuteInterval

    http://stackoverflow.com/questions/6948297/uidatepicker-odd-behavior-when-setting-minuteinterval

    Here's yet another approach, with an Objective-C category!

    I took the spirit of @zurbergram's rounding behavior (up/down to closest) and @mmorris's overall answer and came up with this category:

    #import <UIKit/UIKit.h>
    
    @interface UIDatePicker (SetDateRounded)
    
    -(void)setMinimumDateRoundedByMinuteInterval:(NSDate *)minimumDate;
    -(void)setDateRoundedByMinuteInterval:(NSDate *)date animated:(BOOL)animatedYesNo;
    
    @end
    
    @implementation UIDatePicker (SetDateRounded)
    
    -(void)setDateRoundedByMinuteInterval:(NSDate *)date animated:(BOOL)animatedYesNo
    {
        NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSMinuteCalendarUnit fromDate:date];
        NSInteger minutes = [dateComponents minute];
        NSInteger minutesRounded = roundf((float)minutes / (float)[self minuteInterval]) * self.minuteInterval;
        NSDate *roundedDate = [[NSDate alloc] initWithTimeInterval:60.0 * (minutesRounded - minutes) sinceDate:date];
        [self setDate:roundedDate animated:animatedYesNo];
    }
    
    -(void)setMinimumDateRoundedByMinuteInterval:(NSDate *)date
    {
        NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSMinuteCalendarUnit fromDate:date];
        NSInteger minutes = [dateComponents minute];
        NSInteger minutesRounded = roundf((float)minutes / (float)[self minuteInterval]) * self.minuteInterval;
        NSDate *roundedDate = [[NSDate alloc] initWithTimeInterval:60.0 * (minutesRounded - minutes) sinceDate:date];
        [self setMinimumDate:roundedDate];
    }
    
    @end

    Then in your implementation, you can do something like this:

    #import "UIDatePicker+SetDateRounded.h"
    
    ...
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        _datePicker.minuteInterval = 15;
    
        [_datePicker setMinimumDateRoundedByMinuteInterval:[NSDate date]];
        [_datePicker setDateRoundedByMinuteInterval:[NSDate date] animated:YES];
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    js中break/continue
    js实现连接的两种放法
    jsdate对象toLocaleString()方法小结
    接口学习小节
    c# 装箱和拆箱
    c#数据类型学习
    return 作用域
    js中break/continue
    ArcGIS Runtime for Android开发教程V2.0(9)基础篇查询检索
    【转】ArcGIS 10.1 地图发布以及缓存管理
  • 原文地址:https://www.cnblogs.com/zsw-1993/p/4879480.html
Copyright © 2011-2022 走看看