iOS – Descartar UIDatePicker presentado como inputView

Tengo un campo de text en mi interfaz de usuario que, cuando se selecciona, presenta un UIDatePicker en lugar del keyboard pnetworkingeterminado, ¿cómo podría configurar un button para descartar el selector cuando el usuario termine?

Lo que hago es tener mi inputView como una vista personalizada que contiene un UIDatePicker y una barra de herramientas por encima con un button 'Done' conectado a un método que llama a un método de delegado para decirle al object que posee el UITextField que descarte el "keyboard" llamando a resignFirstResponder .

Cree una UIView (es decir, customDatePickerView) y en esa vista, cree datepicker y un button hecho y un button cancelar en el xib. En el delegado del campo de text:

 - (void)textFieldDidBeginEditing:(UITextField *)textField { if (textField == textfieldName) { [textfieldName resignFirstResponder]; //show the view self.customDatePickerView.hidden = NO; } }//dismisses keyboard 

Función en el valor del selector de date cambiado

 - (IBAction)onDatePickerClick:(id)sender { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; [dateFormatter setDateFormat:@"MM/dd/YYYY"]; NSDate *selectedDate = [self.wellRecordDatePicker date]; NSString *recordDate = [dateFormatter stringFromDate:selectedDate]; self.yourTextfieldName.text = recordDate; } - (IBAction)onDoneBtnClick:(id)sender { self.customDatePickerView.hidden = YES; } - (IBAction)onCancelBtnClick:(id)sender { self.customDatePickerView.hidden = YES; } 

Espero que esto te ayudará.

He hecho algo similar en el que he creado una vista con un button y el UIDatePicker , luego UIDatePicker presentado esa vista en lugar del UIDatePicker solo. Luego, el button está conectado a una IBAction que mueve la vista.

De esta manera, el button se mueve con la vista UIDatePicker y se ven "conectados" al usuario. Incluso puede definir esta UIView en su punta y usar addSubview: en time de ejecución.

Puedes resolver esto agregando esto

 [self.view endEditing:YES]; 

Agregue esto donde desea descartar el datepicker como si hubiera agregado esto en un gesto de toque
En viewDidLoad agregó una Tapgesture

  UITapGestureRecognizer *gesRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; // Declare the Gesture. gesRecognizer.delegate = self; [self.view addGestureRecognizer:gesRecognizer]; 

Después de agregar esto en viewdidLoad, agregue este método para detectar el reconocimiento de gestos.

 - (void)handleTap:(UITapGestureRecognizer *)gestureRecognizer{ NSLog(@"Tapped"); [self.view endEditing:YES]; }