一:UIDatePicker的介紹
UIDatePicker 是一個控制器類,封裝了 UIPickerView,但是他是UIControl的子類,專門用于接受日期、時間和持續時長的輸入。
日期選取器的各列會按照指定的風格進行自動配置,這樣就讓開發者不必關心如何配置表盤這樣的底層操作。
你也可以對其進行定制,令其使用任何範圍的日期。
UIDatePicker這個類的對象讓使用者可以在多個車輪上選擇日期和時間。
iPhone手機上的‘時鐘’應用程式中的時間與鬧鈴中便使用了該控件。
使用這個控件時,如果你能配置正确,當使用者滾動車輪到一個新的日期或者時間上時,利用UIControlEventValueChanged觸發事件。
UIDatePicker給出了倒計時模式,但是并沒有實作相關事件。
如果你使用該模式,必須在應用程式中設定一個NSTime對象,讓倒計時中的時間不斷減少。
二:UIDatePicker的使用
2.1 建立并添加一個UIDatePicker對象
//
// ViewController.m
// DatePicker
//
#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];
4. 本篇文章demo源碼:
源碼Demo擷取方法
關注 【網羅開發】微信公衆号,回複【88】便可領取。
網羅天下方法,友善你我開發,更多iOS技術幹貨等待領取,所有文檔會持續更新,歡迎關注一起成長!