Vai al contenuto
Menu
← Torna al blog

Unity TouchScreenKeyboard su WebGL desktop

Frustrated Unity developer debugging TouchScreenKeyboard issue on desktop

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: TextFieldMobileInput maniglie soft tastiera input
  • Sul desktop: TextFieldKeyboardInput prende 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.

Nova UI campo di ingresso scorrevole con tastiera mobile logica sorvegliata a runtime
Unity Nova UI: Protezione TouchScreenKeyboard logica a runtime su piattaforme non mobili

Leave a Comment

Scroll to Top