UIDatePicker与“完成”button

我需要添加一个“完成”button到我的dateselect器,就像在这个图像:

在这里输入图像说明

这是我的代码:

-(IBAction)chooseDate:(id)sender{ self.datepicker= [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 320, 216)]; self.datepicker.datePickerMode = UIDatePickerModeDate; datepicker.backgroundColor = Rgb2UIColor(52, 170, 220); [self.btnDone addTarget:self action:@selector(SetDatePickerTime:) forControlEvents:UIControlEventTouchDown]; [self.view addSubview:self.datepicker]; } 

创build一个dateselect器,然后将其添加为问题字段的input视图( self.fieldInQuestion.inputView = datePicker )。 接下来,创build一个UIToolBar (高度44)与UIBarButton项目与标题“完成”,自己的目标和一个select器(例如@select器(完成))。 将此添加为您为dateselect器input视图的同一字段的input附件视图( self.fieldInQuestion.inputAccessoryView = UIToolbarInstance )。 在select器方法( – (无效)在上面的例子中完成),确保你使用[self.fieldInQuestion resignFirstResponder],它会消除它。

随着斯威夫特

 // Place this code inside your ViewController or where you want ;) var txtField: UITextField = UITextField(frame: CGRectMake(0, 0, 200, 50)) // the formatter should be "compliant" to the UIDatePickerMode selected below var dateFormatter: NSDateFormatter { let formatter = NSDateFormatter() // customize the locale for the formatter if you want //formatter.locale = NSLocale(localeIdentifier: "it_IT") formatter.dateFormat = "dd/MM/yyyy" return formatter } override func viewDidLoad() { super.viewDidLoad() // date picker setup let datePickerView:UIDatePicker = UIDatePicker() // choose the mode you want // other options are: DateAndTime, Time, CountDownTimer datePickerView.datePickerMode = UIDatePickerMode.Date // choose your locale or leave the default (system) //datePickerView.locale = NSLocale.init(localeIdentifier: "it_IT") datePickerView.addTarget(self, action: "onDatePickerValueChanged:", forControlEvents: UIControlEvents.ValueChanged) txtField.inputView = datePickerView // datepicker toolbar setup let toolBar = UIToolbar() toolBar.barStyle = UIBarStyle.Default toolBar.translucent = true let space = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil) let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Done, target: self, action: "doneDatePickerPressed") // if you remove the space element, the "done" button will be left aligned // you can add more items if you want toolBar.setItems([space, doneButton], animated: false) toolBar.userInteractionEnabled = true toolBar.sizeToFit() txtField.inputAccessoryView = toolBar self.view.addSubview(txtField) } func doneDatePickerPressed(){ self.view.endEditing(true) } func onDatePickerValueChanged(datePicker: UIDatePicker) { self.txtField = dateFormatter.stringFromDate(datePicker.date) } 

你的问题的参考图像显示,该应用程序正在使用UIToolbar,我会假设,当在date文本字段上点击dateselect完成button出现。并为此在某些H文件

 /*****keyboard Done button ***/ #import <UIKit/UIKit.h> @interface ViewController : UIViewController { IBOutlet UIDatePicker *picker1; IBOutlet UITextField *txtFld; } @property (nonatomic, retain) UIToolbar *keyboardToolbar; @end 

在some.m文件中

 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; picker1=[[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 320, 300)];//frames are just for demo [txtFld setInputView:picker1]; } - (void)keyboardWillShow:(NSNotification *)notification { if(keyboardToolbar == nil) { keyboardToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 410, 320, 44)] ; [keyboardToolbar setBarStyle:UIBarStyleBlackTranslucent]; [keyboardToolbar sizeToFit]; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.4]; UIBarButtonItem *flexButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; UIBarButtonItem *doneButton1 =[[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(resignKeyboard)]; NSArray *itemsArray = [NSArray arrayWithObjects:flexButton,doneButton1, nil]; [keyboardToolbar setItems:itemsArray]; [txtFld setInputAccessoryView:keyboardToolbar]; [self.view addSubview:keyboardToolbar]; [UIView commitAnimations]; } } -(void)resignKeyboard { [keyboardToolbar removeFromSuperview]; [txtFld resignFirstResponder]; ///do nescessary date calculation here } 

在这里输入图像说明

我做!!!!

 -(IBAction)ChooseDate:(id)sender{ btnDone = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [done setTitle:@"GO!" forState:UIControlStateNormal]; btnDone.backgroundColor = UIColorFromRGB(0x1F1F21); btnDone.frame = CGRectMake(80.0, 210.0, 160.0, 40.0); [btnDone addTarget:self action:@selector(HidePicker:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btnDone]; self.datepicker= [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 320, 216)]; self.datepicker.datePickerMode = UIDatePickerModeDate; datepicker.backgroundColor = Rgb2UIColor(52, 170, 220); [self.view addSubview:self.datepicker]; } -(IBAction)HidePicker:(id)sender{ [UIView animateWithDuration:0.5 animations:^{ datepicker.frame = CGRectMake(0, -250, 320, 50); } completion:^(BOOL finished) { [datepicker removeFromSuperview]; [btnDone removeFromSuperview]; }]; [self.datepicker removeFromSuperview]; NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init]; [outputFormatter setDateFormat:@"ddMMyyyy"]; //NSLOG NSLog(@"%@",[outputFormatter stringFromDate:self.datepicker.date]); 

}

创build一个UIView并将其添加到主视图。 添加一个UIDatePicker到新的UIView。 将两个UIButtons添加到UIView。