Skip to content

Commit

Permalink
Fixed bug 4004 - iOS: don't hide keyboard on RETURN
Browse files Browse the repository at this point in the history
Dominik Reichardt

As discussed in 2012 the iOS onscreen keyboard hides when you hit RETURN (see https://discourse.libsdl.org/t/on-screen-keyboard-change/19216).
IMO this is a bad idea to not be able to influence this behavior and just recently this was fixed for Android by adding the hint SDL_HINT_ANDROID_RETURN_HIDES_IME in changeset 11768	6ce3bb5e38a5.
  • Loading branch information
slouken committed Dec 19, 2017
1 parent fee2469 commit b92e2f0
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 7 deletions.
Expand Up @@ -1508,7 +1508,7 @@ public boolean sendKeyEvent(KeyEvent event) {
*/

if (event.getKeyCode() == 66) {
String imeHide = SDLActivity.nativeGetHint("SDL_ANDROID_RETURN_HIDES_IME");
String imeHide = SDLActivity.nativeGetHint("SDL_RETURN_KEY_HIDES_IME");
if ((imeHide != null) && imeHide.equals("1")) {
Context c = SDL.getContext();
if (c instanceof SDLActivity) {
Expand Down
9 changes: 4 additions & 5 deletions include/SDL_hints.h
Expand Up @@ -721,17 +721,16 @@ extern "C" {
#define SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH "SDL_ANDROID_SEPARATE_MOUSE_AND_TOUCH"

/**
* \brief A variable to control whether the return key on the soft keyboard should hide the
* soft keyboard on Android.
* \brief A variable to control whether the return key on the soft keyboard
* should hide the soft keyboard on Android and iOS.
*
* The variable can be set to the following values:
* "0" - The return key will be handled as a key event. This is the behaviour of
* SDL <= 2.0.3. (default)
* "0" - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default)
* "1" - The return key will hide the keyboard.
*
* The value of this hint is used at runtime, so it can be changed at any time.
*/
#define SDL_HINT_ANDROID_RETURN_HIDES_IME "SDL_ANDROID_RETURN_HIDES_IME"
#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME"

/**
* \brief override the binding element for keyboard inputs for Emscripten builds
Expand Down
4 changes: 3 additions & 1 deletion src/video/uikit/SDL_uikitviewcontroller.m
Expand Up @@ -387,7 +387,9 @@ - (BOOL)textFieldShouldReturn:(UITextField*)_textField
{
SDL_SendKeyboardKey(SDL_PRESSED, SDL_SCANCODE_RETURN);
SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_RETURN);
SDL_StopTextInput();
if (SDL_GetHintBoolean(SDL_HINT_RETURN_KEY_HIDES_IME, SDL_FALSE)) {
SDL_StopTextInput();
}
return YES;
}

Expand Down

0 comments on commit b92e2f0

Please sign in to comment.