Quando si lavora I campi di input scorrevoli di Nova UI in Unity 6, abbiamo colpito un problema frustrante: TouchScreenKeyboard.isSupported era tornato vero sul desktop piattaforme come Windows e macOS. Ma la tastiera virtuale non ha mai mostrato. Perche’? Perché Unity definisce “supporto” allentatamente — se un hardware tastiera è disponibile, restituisce true, anche se tastiera morbida non viene mai visualizzata.
💥 Il sintomo in NovaUI TextFieldMobileInput.InputLoop
if (touchScreenKeyboardController.Status != TouchScreenKeyboard.Status.Visible)
Questo controllo falliva: presumeva erroneamente che la tastiera fosse visibile, provocando perdita di fuoco indesiderata o uscite di coroutine.
🧠 La correzione corretta
Non contare su TouchScreenKeyboard.isSupported da solo. Combinalo con Application.isMobilePlatform per un controllo di runtime pulito:
void Awake()
{
if (!Application.isMobilePlatform)
{
Debug.Log("TextFieldMobileInput disabled on non-mobile platform.");
this.enabled = false;
}
}
O se si desidera patchare il 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;
}
Questo evita l’esecuzione di codice di ingresso solo mobile su piattaforme che non lo supportano.
✅ Risultato
- Su Android/iOS:
TextFieldMobileInputmaniglie soft tastiera input - Sul desktop:
TextFieldKeyboardInputprende il sopravvento - Nessun controllo della tastiera fuorviante, nessun coroutine sprecato
🧪 Bonus Tip
È anche possibile applicare questo in Editor tramite un menu contestuale o uno script di validazione per garantire che il prefab non re-enable questo componente accidentalmente durante il test.
🧼 Pensieri finali
La piattaforma di Unity colpisce ancora — ma con una guardia runtime a una linea, i campi di ingresso Nova UI possono comportarsi correttamente su piattaforme.

TouchScreenKeyboard logica a runtime su piattaforme non mobili