When working with Nova UI’s scrollable input fields in Unity 6, we hit a frustrating issue: TouchScreenKeyboard.isSupported was returning true on desktop platforms like Windows and macOS.
But the virtual keyboard never showed. Why? Because Unity defines “support” loosely — if a hardware keyboard is available, it returns true, even though a soft keyboard is never displayed.
💥 The Symptom in NovaUI TextFieldMobileInput.InputLoop
if (touchScreenKeyboardController.Status != TouchScreenKeyboard.Status.Visible)
This check always failed — falsely assuming the keyboard was visible when it wasn’t, leading to unwanted focus loss or coroutine exits.
🧠 The Correct Fix
Don’t rely on TouchScreenKeyboard.isSupported alone. Combine it with Application.isMobilePlatform for a clean runtime check:
void Awake()
{
if (!Application.isMobilePlatform)
{
Debug.Log("TextFieldMobileInput disabled on non-mobile platform.");
this.enabled = false;
}
}
Or if you want to patch the TextFieldMobileInput in NovaUI
protected override void OnEnable()
{
Debug.Log("TouchScreenKeyboard.isSupported: " + TouchScreenKeyboard.isSupported);
if (!Application.isMobilePlatform || !TouchScreenKeyboard.isSupported)
{
Debug.Log("Disabling TextFieldMobileInput – not a mobile platform");
enabled = false;
// If touchscreen keyboard not supported on this device, do nothing
return;
}
base.OnEnable();
// Subscribe to selection changed so we can update the touch screen
// keyboard whenever the input field selection changes
inputField.OnTextSelectionChanged += UpdateTouchScreenKeyboardSelection;
}
This avoids running mobile-only input code on platforms that don’t support it.
✅ Result
- On Android/iOS:
TextFieldMobileInputhandles soft keyboard input - On desktop:
TextFieldKeyboardInputtakes over cleanly - No misleading keyboard checks, no wasted coroutines
🧪 Bonus Tip
You can even enforce this in Editor via a context menu or validation script to ensure the prefab doesn’t re-enable this component accidentally during testing.
🧼 Final Thoughts
Unity’s platform quirks strike again — but with a one-line runtime guard, your Nova UI input fields can behave properly across platforms.

TouchScreenKeyboard logic at runtime on non-mobile platforms