3

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.

DipakSonara
  • 2,598
  • 3
  • 29
  • 34
Mandeep Kaur
  • 183
  • 4
  • 17

4 Answers4

2

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];
}
Community
  • 1
  • 1
Anbu.Karthik
  • 82,064
  • 23
  • 174
  • 143
1

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];
}
Ayaz
  • 1,398
  • 15
  • 29
0

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];
Jay Gajjar
  • 2,661
  • 2
  • 21
  • 35
0

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];
}
Anbu.Karthik
  • 82,064
  • 23
  • 174
  • 143
Ravi Tailor
  • 189
  • 4