Search code examples
iosobjective-cuitextfielduitoolbar

Keyboard toolbar for multiple textFields


In my project, some viewControllers have multiple text fields,
I found how to add a toolbar above keyboard with a "Ok" button to hide keyboard when the button is tapped.
The code I am using is this below :

UIBarButtonItem *flex = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:_destField action:@selector(resignFirstResponder)];
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 34)]; 
toolbar.items = [NSArray arrayWithObjects:flex, barButton, nil];    
_destField.inputAccessoryView = toolbar;

How can I easily reuse this code in the same view controller?
The "target" makes this difficult, is there a way without creating a toolbar for each textField?

Thanks!


Solution

  • If this code is in a view controller then there is a simple solution. Change the barButton to something like this:

    UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissKeyboard)];
    

    Then add this method to the view controller:

    - (void)dismissKeyboard {
        [self.view endEditing:YES];
    }
    

    That will dismiss the keyboard no matter what view is showing it.

    Now you can reuse that toolbar as the inputAccessoryView for any text field/view in the view controller.