HOW TO TOGGLE UIBARBUTTONITEM ON KEYBOARDDIDSHOW

Total Post:119

Points:835
 1502  View(s)
Ratings:
Rate this:

Purpose: I am attempting to toggle the "Save" UIBarButtonItem with the "Hide Keyboard" UIBarButtonItem whenever the Keyboard appears (and then do the opposite when the "Hide Keyboard" button is clicked).

So far I have created two UIBarButtonItems and connected them both to Interface Builder.

@property (weak, nonatomic) IBOutlet UIBarButtonItem *saveButton;

@property (weak, nonatomic) IBOutlet UIBarButtonItem *hideKeyButton;

This is the code I have setup so far in my main:

- (void)keyboardDidShow:(NSNotification *)aNotification {
            // Show HideKey Button
            // Hide Save Button
        }
 
        - (void)keyboardWillHide:(NSNotification *)aNotification {
            // Show Save Button
            // Hide HideKey Button
        }

On Interface Builder, the Save button is present by default. Programmatically, how do I show the HideKey button and Hide the Save button? Thanks.

  1. Post:194

    Points:1396
    Re: How to Toggle UIBarButtonItem on KeyboardDidShow

    There are two parts to make this work.

    First, you need to register for the notifications, what you can do is, in your viewDidLoad, add the following:

    [[NSNotificationCenter defaultCenter] addObserver:self

                                             selector:@selector(keyboardDidShow:)

                                                 name:UIKeyboardDidShowNotification

                                               object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self

                                             selector:@selector(keyboardWillHide:)

                                                 name:UIKeyboardWillHideNotification

                                               object:nil];

    Secondly, in your event handlers, simply set the buttons:

                - (void)keyboardDidShow:(NSNotification *)aNotification {

        self.navigationItem.rightBarButtonItem = hideKeyButton;

    }

     

    - (void)keyboardWillHide:(NSNotification *)aNotification {

        self.navigationItem.rightBarButtonItem = saveButton;

    }

  1. Post:36

    Points:260
    Re: How to Toggle UIBarButtonItem on KeyboardDidShow

    Instead of using IB for this task, I would do it programmatically.

    Something like this:

    UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave
                                                                                 target:self
                                                                                 action:@selector(saveButtonPressed:)];
    [self.navigationItem setRightBarButtonItem:saveButton];

    And in a similar fashion to create and set the HideKey button.

    Then, of course you may want to cache the UIBarButtonItems, setting lazy @properties for them.

      Modified On Apr-05-2018 11:58:24 PM

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!