iOS UIDatePicker的使用

一:UIDatePicker的介紹

UIDatePicker 是一個控制器類,封裝了 UIPickerView,但是他是UIControl的子類,專門用於接受日期、時間和持續時長的輸入。
日期選取器的各列會按照指定的風格進行自動配置,這樣就讓開發者不必關心如何配置錶盤這樣的底層操作。
你也可以對其進行定製,令其使用任何範圍的日期。

UIDatePicker這個類的對象讓用戶可以在多個車輪上選擇日期和時間。
iPhone手機上的‘時鐘’應用程序中的時間與鬧鈴中便使用了該控件。
使用這個控件時,如果你能配置正確,當用戶滾動車輪到一個新的日期或者時間上時,利用UIControlEventValueChanged觸發事件。
UIDatePicker給出了倒計時模式,但是並沒有實現相關事件。
如果你使用該模式,必須在應用程序中設置一個NSTime對象,讓倒計時中的時間不斷減少。

二:UIDatePicker的使用

2.1 創建並添加一個UIDatePicker對象

//
//  ViewController.m
//  DatePicker
//
//  Created by  on 2017/10/23.
//  Copyright © 2017年 DatePicker. All rights reserved.
//

#import "ViewController.h"

#define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width
#define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height

@interface ViewController ()

//創建對象
@property (nonatomic, strong) UIDatePicker *datePicker;

@end

2.2 配置UIDatePicker對象

- (void)setupDateKeyPan {
    
    UIDatePicker *datePicker = [[UIDatePicker alloc] init];
    
    //設置地區: zh-中國
    datePicker.locale = [NSLocale localeWithLocaleIdentifier:@"zh"];
    
    //設置日期模式(Displays month, day, and year depending on the locale setting)
    datePicker.datePickerMode = UIDatePickerModeCountDownTimer;
    // 設置當前顯示時間
    [datePicker setDate:[NSDate date] animated:YES];
    // 設置顯示最大時間(此處爲當前時間)
    [datePicker setMaximumDate:[NSDate date]];
    
    //設置時間格式
    
    //監聽DataPicker的滾動
    [datePicker addTarget:self action:@selector(dateChange:) forControlEvents:UIControlEventValueChanged];
    
    self.datePicker = datePicker;
    
    //設置時間輸入框的鍵盤框樣式爲時間選擇器
    self.timeTextField.inputView = datePicker;
}

2.3 禁止用戶輸入文字

//禁止用戶輸入文字
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
  return NO;
}

2.4 顯示文本

- (void)dateChange:(UIDatePicker *)datePicker {
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    
    //設置時間格式
    formatter.dateFormat = @"yyyy年 MM月 dd日";
    NSString *dateStr = [formatter  stringFromDate:datePicker.date];
    
    self.timeTextField.text = dateStr;
}
@end

三:選擇模式

日期/時間選取器持4種不同模式的選擇方式。
通過設置 datePickerMode 屬性,可以定義選擇模式:

datePicker.datePickerMode = UIDatePickerModeTime; 

支持的模式:

四種時間模式樣式截圖如下:

3.1 UIDatePickerModeTime

 

在這種模式下,顯示時、分、AM/PM標誌(可選)。具體的顯示順序取決於設備的本地化設置。

3.2 UIDatePickerModeDate

在這種模式下,顯示年、月、日。具體的顯示順序取決於設備的本地化設置。

3.3 UIDatePickerModeDateAndTime

在這種模式下,顯示日期的月、日、星期,時間的時、分、AM/PM標誌(可選)。具體的顯示順序取決於設備的本地化設置。

3.4 UIDatePickerModeCountDownTimer

在這種模式下,顯示時、分。應用程序必須實現一個計數器(NSTimer對象),讓倒計時中的時間不斷減少。

四:日期範圍

你可以通過設置mininumDate 和 maxinumDate 屬性,來指定使用的日期範圍。如果用戶試圖滾動到超出這一範圍的日期,錶盤會回滾到最近的有效日期。兩個方法都需要NSDate 對象作參數:

NSDate* minDate = [[NSDate alloc]initWithString:@"1900-01-01 00:00:00 -0500"];    
NSDate* maxDate = [[NSDate alloc]initWithString:@"2099-01-01 00:00:00 -0500"];    

datePicker.minimumDate = minDate;    
datePicker.maximumDate = maxDate;  

如果兩個日期範圍屬性中任何一個未被設置,則默認行爲將會允許用戶選擇過去或未來的任意日期。這在某些情況下很有用處,比如,當選擇生日時,可以是過去的任意日期,但終止與當前日期。如果你希望設置默認顯示的日期,可以使用date屬性:

datePicker.date = minDate; 

 此外,你還可以用 setDate 方法。如果選擇了使用動畫,則錶盤會滾動到你指定的日期:

[datePicker setDate:maxDate animated:YES]; 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章