Frage

Ich habe einen Multiview -Prozess, den der Benutzer in Daten eingibt, und ich speichere ihn in den Modellklasseneigenschaften jeden Schritt auf dem Weg.

ich benutze textFieldDidEndEditing So überprüfen Sie, ob die Eingabe gültig ist, und speichern Sie die eingegebenen Daten.

Nach der Ansicht habe ich ein Ereignis, das überprüft wird, ob alle Validierungen bestehen und ob die nächste Ansicht geladen wird. Ich setze die Eigenschaften des Modells hier nicht fest, weil ich denke, ich sollte es nicht müssen, da jedes Feld jeweils im Feld Modell 1 gespeichert wird. Ich bemerkte jedoch einige Probleme.

Wenn sich der Benutzer in einem Textfeld befindet und auf die Schaltfläche "Fortsetzung" klickt, feuert das Ereignis weiter vor der textFieldDidEndEditing. Was am Ende passiert, ist, dass die nächste Ansicht vor dem Speichervorgang mit dem "alten" Modell besiedelt ist textFieldDidEndEditing.

Was vermisse ich? Ist es richtig, alle Eigenschaften auf die Weiter zu setzen? So würde ich es tun, wenn ich für das Web programmieren würde, aber es scheint für eine native App nicht richtig zu sein.

War es hilfreich?

Lösung

Können Sie dies stattdessen versuchen und sehen, ob dies Ihr Problem löst?

textFieldShouldEndEditing:

Andere Tipps

Du kannst anrufen resignFirstResponder Auf dem aktiven Textfeld/Textview (oder auf allen), die die auslösen textFieldDidEndEditing.

Im Allgemeinen besteht ein anderer Ansatz bei solchen Problemen mit Textbearbeitung darin, die zu missbrauchen -textField:shouldChangeCharactersInRange:... Delegate -Methode, bei der Sie den neuen Wert für jedes eingegebene Zeichen bestimmen können. Sie sollten nur zu dieser Methode zurückkehren, wenn es keinen anderen Weg gibt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top