iPhonedateselect器,而不是键盘?

你会怎么做?

我有一个UITextField的窗体。 当我点击它,我想显示一个UIDatePicker,而不是默认popup默认的键盘? 请注意,我的表单上还有其他元素。

我认为这是一个更正式的方式来做到这一点:

UIDatePicker *datePicker = [[[UIDatePicker alloc] init] autorelease]; datePicker.datePickerMode = UIDatePickerModeDate; [datePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged]; datePicker.tag = indexPath.row; textField.inputView = datePicker; 

在.h

 UIDatePicker *datePicker; NSDate *date; UIToolbar *keyboardToolbar; 

在ViewDidLoad中:

 if (keyboardToolbar == nil) { keyboardToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)]; [keyboardToolbar setBarStyle:UIBarStyleBlackTranslucent]; UIBarButtonItem *extraSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; UIBarButtonItem *accept = [[UIBarButtonItem alloc] initWithTitle:@"Accept" style:UIBarButtonItemStyleDone target:self action:@selector(closeKeyboard:)]; [keyboardToolbar setItems:[[NSArray alloc] initWithObjects: extraSpace, accept, nil]]; } self.txtDate.inputAccessoryView = keyboardToolbar; datePicker = [[UIDatePicker alloc] init]; datePicker.datePickerMode = UIDatePickerModeDate; [datePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged]; self.txtDate.inputView = datePicker; - (void)datePickerValueChanged:(id)sender{ date = datePicker.date; NSDateFormatter *df = [[NSDateFormatter alloc] init]; [df setDateFormat:@"dd/MM/YYYY"]; [self.txtDate setText:[df stringFromDate:date]]; } 

在故事板中添加到txtDate – > EditingDidEnd

 - (IBAction)establishHour:(id)sender{ hour = hourPicker.date; NSDateFormatter *hf = [[NSDateFormatter alloc] init]; [hf setDateFormat:@"HH:MM"]; [self.txtHour setText:[hf stringFromDate:hour]]; } 

将键盘设置为DatePicker,并创build一个带有button的工具栏来接受select。

如果有人愿意,我已经把Johan Kool的答案转换成了swift。 我把代码放在viewDidLoad中。

 let datePicker = UIDatePicker() datePicker.datePickerMode = UIDatePickerMode.Date datePicker.addTarget(self, action: "datePickerValueChanged:", forControlEvents: UIControlEvents.ValueChanged) textField.inputView = datePicker 
 (IBAction)estableceHora:(id)sender{ Hora = horaPicker.date; NSDateFormatter *hf = [[NSDateFormatter alloc] init]; [hf setDateFormat:@"HH:MM"]; [self.txtHora setText:[hf stringFromDate:Hora]]; } 

在.h文件中添加:

 UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> 

在.m文件中添加:

 { NSDateFormatter *df = [[NSDateFormatter alloc] init]; df.dateStyle = NSDateFormatterMediumStyle; pTxtDate.text = [NSString stringWithFormat:@"%@", [df stringFromDate:[NSDate date]]]; NSLog(@"pTxtDate.text %@",pTxtDate.text); [df release]; [self.view addSubview:pTxtDate]; [pTxtDate release]; DatePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 250, 325, 300)]; DatePicker.datePickerMode = UIDatePickerModeDate; DatePicker.hidden = NO; DatePicker.date = [NSDate date]; [DatePicker addTarget:self action:@selector(LabelChange:) forControlEvents:UIControlEventValueChanged]; [self.view addSubview:DatePicker]; [DatePicker release]; } - (void)LabelChange:(id)sender { NSDateFormatter *df = [[NSDateFormatter alloc] init]; df.dateStyle = NSDateFormatterMediumStyle; pTxtDate.text = [NSString stringWithFormat:@"%@", [df stringFromDate:DatePicker.date]]; }