...
1 #import "ViewController.h" 2 3 @interface ViewController () <UITextFieldDelegate> 4 @property (weak, nonatomic) IBOutlet UITextField *birthdayLabel; 5 @property (strong, nonatomic)UIDatePicker *datePicker; 6 7 @end 8 9 @implementation ViewController 10 11 - (void)viewDidLoad { 12 [super viewDidLoad]; 13 _birthdayLabel.delegate = self; 14 15 // 設置自定義鍵盤 16 [self setupBirthdayKeyboard]; 17 18 } 19 20 - (void)setupBirthdayKeyboard 21 { 22 // 創建UIDatePicker,有預設的frame,所以不用設置尺寸 23 UIDatePicker *picker = [[UIDatePicker alloc] init]; 24 _datePicker = picker; 25 // 設置本地化(本地語言) 26 picker.locale = [NSLocale localeWithLocaleIdentifier:@"zh"]; 27 // 設置時間顯示格式,還有其他好多種 28 picker.datePickerMode = UIDatePickerModeDate; 29 30 //監聽UIDatePicker的滾動 31 [picker addTarget:self action:@selector(dateChange:) forControlEvents:UIControlEventValueChanged]; 32 self.birthdayLabel.inputView = picker; 33 } 34 35 - (void)dateChange:(UIDatePicker *)datePicker 36 { 37 // 這樣就可以獲得生日鍵盤的 datePicker.date 38 // NSLog(@"%@",datePicker.date); 39 // NSLog(@"%s",__func__); 40 41 42 //把獲得的日期轉化成字元串,賦值到birthdayLabel中 43 NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; 44 fmt.dateFormat = @"yyyy-MM-dd"; 45 NSString *datestr = [fmt stringFromDate:datePicker.date]; 46 _birthdayLabel.text = datestr; 47 48 } 49 50 //是否允許開始編輯 51 //- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 52 //{ 53 // return NO; 54 //} 55 //是否允許用戶改變字元(是否允許輸入文字) 56 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ 57 return NO; 58 } 59 - (void)textFieldDidBeginEditing:(UITextField *)textField 60 { 61 //獲取當前dataPicker的日期 62 [self dateChange:_datePicker]; 63 } 64 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 65 { 66 [self.view endEditing:YES]; 67 } 68 @end