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:
TextFieldMobileInputGriffe 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.

TouchScreenKeyboard Logik zur Laufzeit auf nicht mobilen Plattformen