¿Cómo ocultar el keyboard numérico?

introduzca la descripción de la imagen aquí Tengo un campo de text en el que necesito que el usuario escriba solo valores numéricos. Estoy usando el keyboard numérico. En este keyboard no hay button hecho. Vi un artículo aquí que me permitió agregar un button hecho al keyboard.

No puedo ocultar eso, sin embargo. Aquí está mi código

- (void)addButtonToKeyboard { // create custom button UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom]; doneButton.frame = CGRectMake(0, 163, 106, 53); doneButton.adjustsImageWhenHighlighted = NO; if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.0) { [doneButton setImage:[UIImage imageNamed:@"DoneUp3.png"] forState:UIControlStateNormal]; [doneButton setImage:[UIImage imageNamed:@"DoneDown3.png"] forState:UIControlStateHighlighted]; } else { [doneButton setImage:[UIImage imageNamed:@"DoneUp.png"] forState:UIControlStateNormal]; [doneButton setImage:[UIImage imageNamed:@"DoneDown.png"] forState:UIControlStateHighlighted]; } [doneButton addTarget:self action:@selector(doneButton:) forControlEvents:UIControlEventTouchUpInside]; // locate keyboard view UIWindow* tempWindow = [[[UIApplication shanetworkingApplication] windows] objectAtIndex:1]; UIView* keyboard; for(int i=0; i<[tempWindow.subviews count]; i++) { keyboard = [tempWindow.subviews objectAtIndex:i]; // keyboard found, add the button if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2) { if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES) [keyboard addSubview:doneButton]; } else { if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) [keyboard addSubview:doneButton]; } } } - (void)keyboardWillShow:(NSNotification *)note { // if clause is just an additional precaution, you could also dismiss it if ([[[UIDevice currentDevice] systemVersion] floatValue] < 3.2) { [self addButtonToKeyboard]; } } - (void)keyboardDidShow:(NSNotification *)note { // if clause is just an additional precaution, you could also dismiss it if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2) { [self addButtonToKeyboard]; } } - (void)doneButton:(id)sender { NSLog(@"doneButton"); [anualIncome setText:@"hai"]; NSLog(@"Input: %@", anualIncome.text); [anualIncome resignFirstResponder]; } 

amablemente guíame donde estoy haciendo mal. Cuando presiono el button hecho puedo ver la salida de la console como esta

 Hello World[2542:f803] doneButton Hello World[2542:f803] Input: (null) 

Acabo de agregar mi anualincome a mi veiwconroller. ¿Hay alguna otra acción que agregar? Este es mi punto de venta

 @property(nonatomic, retain) IBOutlet UITextField *anualIncome; 

Sin usar el button hecho puede ocultar el keyboard de esta manera:

Los toques de implementación comenzaron el método en su class viewController así:

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [anualIncome resignFirstResponder]; } 

Puede usar una propiedad inputAccessoryView de la instancia de UITextField para establecer una UIToolbar con cualquier button en ella. (de hecho, puede ser cualquier subclass UIView) La vista resultante será como en el safari, cuando rellená algún text en cualquier formulario web. Es mucho mas facil Además, no hay posibilidad de romper la vista en caso de que Apple cambie su implementación …

Feliz encoding …