Lucrând cu câmpurile de introducere derulabile Nova UI în Unity 6, am întâlnit o problemă: TouchScreenKeyboard.isSupported întorcea true pe desktop, inclusiv Windows și macOS.
Dar tastatura virtuală nu apărea. Unity definește „suportul” larg: dacă există o tastatură fizică, întoarce true, chiar dacă tastatura virtuală nu este afișată.
💥 Simptomul în TextFieldMobileInput.InputLoop din Nova UI
if (touchScreenKeyboardController.Status != TouchScreenKeyboard.Status.Visible)
Verificarea eșua și presupunea greșit că tastatura era vizibilă, producând pierderea nedorită a focalizării sau ieșirea din corutină.
🧠 Soluția corectă
Nu te baza doar pe TouchScreenKeyboard.isSupported. Combină verificarea cu Application.isMobilePlatform:
void Awake()
{
if (!Application.isMobilePlatform)
{
Debug.Log("TextFieldMobileInput disabled on non-mobile platform.");
this.enabled = false;
}
}
Sau modifică TextFieldMobileInput din Nova UI:
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;
}
Astfel, codul de introducere destinat mobilului nu rulează pe platformele nepotrivite.
✅ Rezultatul
- Pe Android/iOS: TextFieldMobileInput gestionează tastatura virtuală.
- Pe desktop: TextFieldKeyboardInput preia corect introducerea.
- Fără verificări înșelătoare și corutine inutile.
🧪 Sfat suplimentar
Poți impune verificarea și în Editor, printr-un meniu contextual sau script de validare, pentru ca prefab-ul să nu reactiveze accidental componenta la testare.
🧼 Concluzie
Încă o particularitate Unity: o verificare scurtă la rulare face câmpurile Nova UI să funcționeze corect pe mai multe platforme.

Unity Nova UI: protejarea logicii TouchScreenKeyboard la rulare pe platforme nemobile.
