We have a mobile AR app that uses Unity’s input fields for sign up and login. Unfortunately, these input fields are super buggy on mobile devices.
On Android, the cursor tends to jump around once you type in, this happens if you type at a normal typing speed. Only if you type very slowly, you can avoid that. This is especially bad if you’re using those input fields for password fields. It was so unrealiable that we had to add a “show password” feature to at least let the user know if the password was typed in correctly.
This does not happen on iOS, only on Android (and on all devices we have). Also on Android, the user cannot position the cursor somewhere inside the field. It always shows up at the end of the input field. This is also not the case on iOS.
On both systems, the user cannot paste in something from the keyboard. Which is especially frustrating if users have a password manager installed. Effectively, we force them to type in their passwords manually.
We are using the “old” input fields, but we also tried the TextMeshPro variants. These were even worse, though, so we reverted everything back to the normal UI versions. We even bought an asset on the store (Modern UI), hoping that this would work better, but it didn’t, as it was built upon the regular Unity UI fields.
Last time I asked the same question in this forum, a couple of other people came up who faced similar problems on mobile devices. But none of them had a solution. Has anyone ever found a workaround to this?
We’re on Unity 2019.4 and cannot upgrade to a newer version for now, because of other dependencies (couldn’t get our AR stuff working in Unity 2020 so far). We’re not using any scripts that might interfer with the input field’s regular behavior.
Unity’s built-in InputField for android is actually laughably bad…
Just created empty test project on Unity 2019.4.15f (LTS by the way) slapped canvas and InputField with “Hide mobile input” option off.
Not only did cursor jump around as I typed relatively fast. After about 1minute of typing and deleting, the input field just froze off and would not respond to any action after that: Imgur: The magic of the Internet
(It was actually an ArgumentException inside InputField script which caused the problem…)
Not exactly production ready UI for android, I would say.
edit: same result on 2020.3.12f1(LTS) edit2: found no issues on 2021.1.12f1
I have also been following the issues about the input field on Android for almost two years now. It is unbelievable how bad it is. I’ve tried multiple workarounds (Mopiscus came close, but still far from perfect), but none provide what a user expects from an input field.
When ‘Hide mobile input’ is ticked off you expect the input field to work like every other app on your phone. But when I test it on Unity 2021.1.15 the mobile input field above the keyboard is actually still there. It’s just made invisible, but you can still select text in it. See screenshots below:
Besides that you can’t interact with the input field while the keyboard is open. Lots of the functionalities a user expects from an input field can’t be used now. Even the basics like moving the input position and holding down to select a word are not possible. Are you kidding me?!
I can’t fathom why this would be the solution Unity would go for. Even worse, how it could get through Quality Control. We simply want an input field that works like every other Android app. Not this badly hacked together bullshit!
hey, i don’t know if it belong in here, but i have a really hard time to open / make the phone keyboard to show up, no matter what i did it never show up, is there a setting that i just missing ?
i already tried using the mopsicus package but it still won’t show up
So, even 2 years after this initial post here I’m facing the exact same issues. I cannot move the cursor around within the inputfield on Android, instead the keyobard slides away when I tap on some letter within my inputfield.
Even more frustrating is the fact that this issue seems to be around for many, many years and it got mentioned here many, many times.
In my eyes a “normal” working inputfield shouldnt be something too hard to ask for…
Yeah, I saw this one, but it is discontinued and already has problems on newer Unity versions
Hoping to get fixes in from Unity 6 LTS, for now, but if they do nothing, I guess I’ll have to fix TMP problems in this package and use it instead.
InputFields are effectively a NON feature on Android right now. The new Input System doesn’t open keyboard on InputField tap (shows a glimpse and closes itself). And you can’t use Both input systems in Android. Recently upgraded a project with the new Input System, which really improved touch performance and now I’m stuck BETWEEN release.
Just adding a message to help triggering @unity awareness on this issue.
I’m starting a new app with Unity 6. I created a UIDocument (UIToolkit) where I added a Textfield. In the editor, it works fine, but when deploying to android:
Keyboard is extremely slow if you use data binding, and some inputs are missed when touching the keyboard. On the following example, I’ve made two textfield and one label. First textfield Value attribute is binded to Scriptable object value. Binding mode is “two ways”. When typing in the textfield, the label value is changed as well, as it is binded to the same Scriptable object value (binding mode is “To target”). The second textfield as no binding.
The first textfield has keyboard lagging issues, not the second one. Furthermore, if I set the “Is delayed” attribute to true, the textfield is completely broken and the text is not updated inside of it when using the virtual keyboard…
I tried to use InputActionReference and check for submit action to look for the textfield value. I never managed to trigger that action on tablet. I assume the “OK” button on the virtual keyboard is not considered as a submit action. If looking for a specific key action, it does not match the “Enter” button of a real keyboard and there is no key corresponding for the “OK” on virtual keyboard.
This bug is still ongoing today, and it is really painful for the app we’re developing at my company which contains search fields and formular with error binding.