Răsfoiți Sursa

Work around password integrations hiding software keyboard and preventing autofill

Salman Alshamrani 8 luni în urmă
părinte
comite
29cff6e264
1 a modificat fișierele cu 11 adăugiri și 0 ștergeri
  1. 11 0
      src/video/uikit/SDL_uikitviewcontroller.m

+ 11 - 0
src/video/uikit/SDL_uikitviewcontroller.m

@@ -554,6 +554,14 @@ static void SDLCALL SDL_HideHomeIndicatorHintChanged(void *userdata, const char
 
 - (void)textFieldTextDidChange:(NSNotification *)notification
 {
+    // When opening a password manager overlay to select a password and have it auto-filled,
+    // text input becomes stopped as a result of the keyboard being hidden or the text field losing focus.
+    // As a workaround, ensure text input is activated on any changes to the text field.
+    bool startTextInputMomentarily = !SDL_TextInputActive(window);
+
+    if (startTextInputMomentarily)
+        SDL_StartTextInput(window);
+
     if (textField.markedTextRange == nil) {
         NSUInteger compareLength = SDL_min(textField.text.length, committedText.length);
         NSUInteger matchLength;
@@ -588,6 +596,9 @@ static void SDLCALL SDL_HideHomeIndicatorHintChanged(void *userdata, const char
         }
         committedText = textField.text;
     }
+
+    if (startTextInputMomentarily)
+        SDL_StopTextInput(window);
 }
 
 - (void)updateKeyboard