Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

becomeFirstResponder without hiding Keyboard

I have a view that supports copy and shows the edit menu using the following code:

if ([self becomeFirstResponder]) {
    // bring up edit menu.
    UIMenuController *theMenu = [UIMenuController sharedMenuController];
    [theMenu setTargetRect:[self _textRect] inView:self];
    [theMenu setMenuVisible:YES animated:YES];
}

The problem is, that when becomeFirstResponder gets called, the keyboard get's hidden. A good example of the correct behavior is in the SMS app. Double tap a message while the reply box is visible and the reply box looses focus, but the keyboard stays in place. Also, when the bubble is deselected, the reply box regains focus.

like image 752
David Beck Avatar asked Nov 26 '10 06:11

David Beck


1 Answers

Unfortunately, Apple can do a lot of things that are not available to third-party apps.

I believe what you want is possible in iOS 3.2+ if you make the view that is to become the first responder accept keyboard input. You do that by having your view class adopt the UIKeyInput protocol:

A subclass of UIResponder can adopt this protocol to implement simple text entry. When instances of this subclass are the first responder, the system keyboard is displayed.

The protocol consists of 3 required methods that you have to implement. In your case, you would probably apply the inputs you receive in these methods to your text field and make it the first responder again. I haven't tried this but it should work.

like image 139
Ole Begemann Avatar answered Sep 28 '22 19:09

Ole Begemann