Hide the keyboard with type UIKeyboardTypeNumberPad objective c

2.9k Views Asked by At

In an iPhone app, I am having a UITextField which needs input as numerics, so I am passing the Keyboard type as UIKeyboardTypeNumberPad. It works but there is no return or Done button, so how can I hide the keyboard.

Code for reference is:

textDriverAge.delegate=self;
textDriverAge.keyboardType=UIKeyboardTypeNumberPad;
textDriverAge.clearButtonMode = UITextFieldViewModeWhileEditing;
[textDriverAge setReturnKeyType:UIReturnKeyDone];// UIReturnKeyNext];
textDriverAge.enablesReturnKeyAutomatically=TRUE;

I have handled the UITextfield events like:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {


if(textDriverAge == textField)
{
    [textDriverAge resignFirstResponder];

    //[tglDropInDropOff becomeFirstResponder];
}

}

Guide me how to hide the keyboard.

4

There are 4 best solutions below

1
On BEST ANSWER

you can use two types

  1. Touch Method.

    use this link iOS dismissing keyboard, UILabel malfunction

in another choice add the UIToolbar in your view Controller.

- (void)viewDidLoad

{
[super viewDidLoad];

UIToolbar  *numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
numberToolbar.items = [NSArray arrayWithObjects:
                       [[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelNumberPad:)],
                       [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                       [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad:)],
                       nil];
yourtextField.inputAccessoryView = numberToolbar;

 }


- (IBAction)cancelNumberPad:(UITextField*)textField
{
 [yourtextField resignFirstResponder];
    yourtextField.text=@"";
}


- (IBAction)doneWithNumberPad:(UITextField*)textField 
{
[yourtextField resignFirstResponder];
}
0
On

You need to put inputAccesoryView to the textfield and add done button to it. Here i have made an xib name 'InputAccessoryView' and designed it according to my needs. You can also do the same...

        InputAccessoryView *inputAccessoryView=(InputAccessoryView *)[[[NSBundle mainBundle] loadNibNamed:@"InputAccessoryView" owner:self options:nil] objectAtIndex:0];
        [inputAccessoryView.doneButton setTarget:self];
        [inputAccessoryView.doneButton setAction:@selector(accessoryDoneAction:)];

        [inputAccessoryView.cancelButton setTarget:self];
        [inputAccessoryView.cancelButton setAction:@selector(acessoryCancelButtonAction:)];


[self.textField setInputAccessoryView:inputAccessoryView];
0
On

Add following code to add return button on numberpad

- (void)viewDidLoad 

{
[super viewDidLoad];

UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
numberToolbar.barStyle = UIBarStyleBlackTranslucent;
numberToolbar.items = [NSArray arrayWithObjects:
                     [[UIBarButtonItem alloc]initWithTitle:@"Return" style:UIBarButtonItemStyleBordered target:self action:@selector(returnNumberPad)],
                 nil];
[numberToolbar sizeToFit];
numberTextField.inputAccessoryView = numberToolbar;

 }

-(void)returnNumberPad
{
[numberTextField resignFirstResponder];
}
0
On

Try this..:-)

- (void)viewDidLoad
{
[self addTapGesture];
}

#pragma mark
#pragma mark Gesture  methods

- (void) addTapGesture {
UITapGestureRecognizer *tapper = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
tapper.cancelsTouchesInView = FALSE;
[self.view addGestureRecognizer:tapper];
}

- (void)handleSingleTap:(UITapGestureRecognizer *) sender
{
[self.view endEditing:YES];
}