Jump to content
Unity Insider Forum

Letztes InputField ermitteln


minuschki

Recommended Posts

Hallo zusammen

Ich habe 6 InputFields nebeneinander positioniert. Der Anwender kann diese in beliebiger Reihenfolge anklicken und eine Eingabe machen. Nach jeder gemachten Eingabe möchte ich den Eingabewert kontrollieren. In "On End Edit (string)" hat jedes InputField eine Verknüpfung zu meinem Hauptskript in dem eine "void eingabetext(string s)" mir den aktuellen Eingabewert mitteilt. Das funktioniert soweit gut, allerdings weiss ich nicht, von welchem InputField der Eingabewert stammt! Genau das wäre aber wichtig zu wissen, um die Eingabe zu überprüfen!

1. Wie kann ich herausfinden, welches InputField der Anwender als letztes mit der Entertaste beendet hat oder mit Mausklick ins Leere bearbeitet hat?

2. Oder muss ich anstelle von "On End Edit (string)" besser "On Value Changed (string)" verwenden?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bei OnEnd wird auch schon gefeuert, wenn du nur rein geklickt hast und wieder raus gegangen bist. Egal ob da was verändert wurde.

Ich würde dafür OnValueChanged nehmen. Also bei OnEnd weisst du, dass da irgendwas gemacht wurde und bei OnValue.. weisst du welches Field eben gerade verändert wurde (da könntest du z.b. eine Zahl übermitteln).
Du hast also eine Zahl, die sofort bei einer Änderung eintritt und dann ein definiertes Ende der Änderung.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke malzbie

Die Überprüfung sollte aber auch erst nach Beendigung der Eingabe stattfinden!

Ich habe das nun auf OnValue geändert. Nun möchte ich, wie von dir vorgeschlagen, eine Zahl übermitteln ( z.B. int eingabebox = 1 ...) . Wie geht denn das?

Zitat: "bei OnValue.. weisst du welches Field eben gerade verändert wurde (da könntest du z.b. eine Zahl übermitteln)."

Meine Idee wäre: Im Skript mittels einer Schleife herauszufinden, welche der Eingabebox "is.Focused" ist. Ist das der richtige Ansatz?

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 19 Minuten schrieb minuschki:

Ich glaube "EventSystem.current.currentSelectedGameObject" tut das, was ich will!

Das zeigt nur an was zum Schluss markiert ist. Könnte dafür auch verwendet werden. Ob es 100%ig funktioniert bin ich mir nicht sicher.

Was ich eher machen würde ist, einfach InputField referenz im Hauptscript. Danach einfach inputField.onEndEdit.AddListener(() => EingabeText(inputField)); Das bei jedem Inputfield. 
Das heißt in EingabeText ist statt string gleich InputField drin und kannst mit inputField.text den Wert lesen.
Das ist "richtiger".

Übrigens das Beispiel oben gibt es so ähnlich sogar bei Unity offiziell bei den InputField Erklärungen. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 4 Stunden schrieb minuschki:

 Nun möchte ich, wie von dir vorgeschlagen, eine Zahl übermitteln ( z.B. int eingabebox = 1 ...) . Wie geht denn das?
 

Wenn du dir eine Methode im Script erstellst, welche eine Zahl übergeben haben möchte:
 

public void GibSieMir( int zahl){
  print("Bin gerade im Eingabefeld "+zahl);
}

Und du dann bei OnValueChanged diese Methode verbindest, dann erscheint sofort eine Feld für die Zahl. Und da kannst du dann eine Zahl eintragen.

feld.png.ac70071bb5be38038d8cb2f4b929c7dc.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...