Make the iOS mobile keyboard input area take up the full screen

Calling TouchScreenKeyboard.Open() brings up the mobile keyboard, with a 3-line white text-preview area above it. I would like to make the 3-line text-preview take up the rest of the screen. This way, the user can’t accidentally press outside the text area and close the mobile keyboard. The user would also be able to preview more text this way.

How can I do this?

Currently it is possible to select the keyboard layout between single- and multi-line which applies to the Apple standards. However, there is a temporary solution using multiline output which can be applied to your iOS project without the use of plugins.

  1. Publish from Unity to iOS to create an XCode project.

  2. In XCode, open Classes → UI → Keyboard.mm.

  3. Adjust the code under line 246 from:

    int height = UnityDeviceDPI() > 300 ? 75 : 100;

to something like:

int height = y - kInputBarSize;

This will force all of your text input areas in Unity (only iOS) to use a keyboard that has a closed and big input field size.

The downside to this solution is that if you re-publish from Unity and select Replace, Unity will overwrite this Keyboard.mm file and you’ll lose this edit, so ensure you keep always a backup.

If you only want to prevent the user from clicking in the background to close the keyboard, you could also create an object which is on top of the scene and catches all input events in case of the keyboard closure and it opens it again (if neccessary), so the user can focus at the input field.

Hope this helps.