Stellen Sie sich eine einfache ScrollView mit mehreren TextInputs wie
vor %Vor%Wenn ich die erste Eingabe eingabe, öffnet sich die Tastatur und ich kann Text eingeben. Wenn ich zum zweiten Eingang wechseln möchte, muss ich zweimal tippen - der erste Typ schließt die Tastatur und nur der zweite Tipp öffnet die Tastatur für die zweite Eingabe.
Eine Lösung ist die Verwendung von keyboardShouldPersistTaps={true}
- das Umschalten funktioniert einwandfrei, aber die Tastatur ist überhaupt nicht geschlossen und die Tastatur kann einige der späteren Eingänge (oder Tasten) abdecken.
Ich kann auch keyboardDismissMode
verwenden, aber nur die Tastatur beim Ziehen schließen.
Meine Frage ist, wie man diese beiden Verhaltensweisen - IMHO die beste Benutzererfahrung - kombiniert, wenn ich auf eine andere Eingabe klicke, der Fokus sofort geändert wird, ohne die Tastatur wieder zu öffnen, und wenn ich irgendwo anders tippe, wird die Tastatur geschlossen?
Ich verwende RN0.22 und eine Beispielanwendung ist verfügbar unter Ссылка
UPDATE - Dieses Problem wurde möglicherweise in RN 0.40 gelöst - siehe Ссылка
Diese SO-Antwort ist nicht genau das, wonach Sie fragen, aber das Fenster wird automatisch aus dem Fenster entfernt hinter der Tastatur, wenn ein TextInput den Fokus hat; Das Auflösen der -Tastatur kann einige der späteren Eingaben (oder Schaltflächen) beheben.
Am Ende habe ich eine Lösung gefunden, die nicht optimal ist (aus der Coding-Perspektive), aber aus der Benutzerperspektive funktioniert. Ich habe eine kleine Komponente erstellt, die anstelle von ScrollView
verwendet werden kann:
Der einzige Nachteil ist, dass ich Node-Handles (wie von React.findNodeHandle
zurückgegeben) aller Texteingaben "manuell" sammeln und als Array an die Komponente übergeben muss.
Tags und Links react-native reactjs keyboard