Zum Inhalt springen
Menü
← Zurück zum Blog

Unity TouchScreenKeyboard auf Desktop-WebGL

Frustrated Unity developer debugging TouchScreenKeyboard issue on desktop

Bei der Arbeit mit Scrollbare Eingabefelder von Nova UI In Unity 6 haben wir ein frustrierendes Problem: TouchScreenKeyboard.isSupported kehrte zurück True auf dem Desktop Plattformen wie Windows und macOS. Aber die virtuelle Tastatur zeigte sich nie. Warum? Weil Unity „Unterstützung“ lose definiert – wenn ein Hardware Tastatur ist verfügbar, es kehrt zurück true, auch wenn ein Soft Keyboard wird nie angezeigt.

Das 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 unerwünschter Fokusverlust oder Coroutine-Exits.

🧠 Der richtige Fix

Verlassen Sie sich nicht auf TouchScreenKeyboard.isSupported allein. Kombinieren Sie es mit Application.isMobilePlatform für eine saubere Laufzeitprüfung:

void Awake()
{
    if (!Application.isMobilePlatform)
    {
        Debug.Log("TextFieldMobileInput disabled on non-mobile platform.");
        this.enabled = false;
    }
}

Oder wenn Sie den 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;
        }

patchen möchten, wird vermieden, dass nur mobile Eingabecodes auf Plattformen ausgeführt werden, die ihn nicht unterstützen.

✅ Ergebnis

  • Auf Android/iOS: TextFieldMobileInput Griffe Soft Keyboard Input
  • Auf dem Desktop: TextFieldKeyboardInput übernimmt Cleanly
  • Keine irreführenden Tastaturkontrollen, keine verschwendeten Koroutinen

🧪 Bonus-Tipp

Sie können dies sogar im Editor über ein Kontextmenü oder ein Validierungsskript erzwingen, um sicherzustellen, dass die Prefab diese Komponente während des Testens nicht versehentlich wieder aktiviert.

🧼 Letzte Gedanken

Die Macken der Unity-Plattform schlagen wieder zu – aber mit einem einzeiligen Laufzeitschutz können sich Ihre Nova UI-Eingabefelder plattformübergreifend richtig verhalten.

Nova UI scrollbares Eingabefeld mit mobiler Tastaturlogik zur Laufzeit geschützt
Unity Nova UI: Bewachung TouchScreenKeyboard Logik zur Laufzeit auf nicht mobilen Plattformen

Schreibe einen Kommentar

Nach oben scrollen