Kämpfen Sie mit der Währung in Kakao
Ich versuche, etwas zu tun, würde ich denken, wäre ziemlich einfach: Lassen Sie eine Benutzer-Eingabe einen dollar-Betrag, store, Höhe in ein NSNumber (NSDecimalNumber?), zeigen Sie dann, dass der Betrag als Währung formatiert wieder einige Zeit später.
Mein Problem ist nicht so sehr mit dem setNumberStyle:NSNumberFormatterCurrencyStyle und anzeigen schwebt als Währung. Das Problem ist mehr mit, wie gesagt numberFormatter arbeitet mit diesem UITextField. Ich kann ein paar Beispiele. Dieser thread von November und diese eine geben Sie mir einige Ideen, aber lässt mich mit mehr Fragen.
Ich bin mit dem UIKeyboardTypeNumberPad Tastatur und verstehen, dass ich sollte wohl zeigen $0.00 (oder was auch immer die lokale Währung-format ist) in das Feld bei der Anzeige dann als Benutzer-zahlen um die Verschiebung der Dezimalstelle zusammen:
- Beginnen mit display $0.00
- Tippen Sie auf Taste 2: Anzeige $0.02
- Tippen Sie auf Taste 5: Anzeige $0.25
- Tippen Sie auf Taste 4: Anzeige $2.54
- Tippen Sie auf Taste 3: display $25.43
Dann [numberFormatter numberFromString:textField.text] sollte mir eine Wert, den ich speichern kann in meinem NSNumber variable.
Leider bin ich immer noch zu kämpfen: Ist das wirklich der beste/einfachste Weg? Wenn ja, dann vielleicht kann mir jemand helfen mit der Umsetzung? Ich fühle mich UITextField möglicherweise müssen Sie einen Delegaten reagiert auf jeden Tastendruck, aber nicht wissen was, wo und wie es zu implementieren?! Alle Beispiel-code? Ich würde es sehr zu schätzen! Ich habe gesucht hoch und niedrig...
Edit1: Also ich bin auf der Suche in NSFormatter ist stringForObjectValue: und die nächste Sache, die ich finden kann, was benzado empfiehlt: UITextViewTextDidChangeNotification. Wirklich harte Zeit der Suche nach Beispielcode auf einer von Ihnen...lassen Sie mich wissen, wenn Sie wissen, wo zu suchen?
- Nette Titel, aber es wird unmöglich sein, zu suchen, die in der Zukunft für Menschen mit einem ähnlichen problem.
- ich dachte darüber nach, aber "Währung" genannt wird überall so gut wie in einem tag.
- Ich änderte es sowieso. Wenn Sie Rollen Sie zurück, ich werde nicht gegen dich kämpfen.
- Für mich sieht es aus wie Währung küssen Sie 😛
- Änderte den Titel für SEO.
- (Ich weiß, das ist sehr alt, aber für später Suchende) kann Ihnen dieses kleine Klasse hilfreich: github.com/iosptl/ios6ptl/tree/master/ch17/Money/Money
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meine Lösung:
Hier ist der grobe plan des Angriffs, die ich verwenden würde, wenn ich schreiben musste, dass jetzt. Der trick wird sein, die Eingabe in eine versteckte UITextField und Aktualisierung UILabel mit dem formatierten Wert als der Benutzer eingibt.
Auf jede Taste drücken, wird die Bezeichnung aktualisiert werden, so dass die Nutzer fühlen sich, als ob Sie das Bearbeiten der formatierte Wert, wenn Sie wirklich Bearbeitung der versteckte text-Feld. Wie hinterhältig!
Gut, ich glaube das ist besser:
Probieren Sie es aus 🙂
Da ich faul bin, und ich kann es nicht ertragen, dass meine Eingabe umformatiert ", um mir zu helfen" on the fly", sage ich:
Lass Sie geben Sie eine Dezimalzahl. Wenn Sie das Spielfeld verlassen, formatieren Sie es.
Gut, das ist ein bisschen spät, aber ich dachte, ich würde ihm eine Chance geben sowieso. Dies ist wohl eher ein workaround und kann sein chaotisch-code, aber es funktionierte für mich. Ich mit einem label und einem hidden-textfield-Objekt in IB, und ich schrieb diesen code mit der UITextFieldDelegate delegieren.
Nicht gerade das sauberste, aber es bekam den job zu erledigen. Die erste if-Anweisung war nur, um sicherzustellen, dass dies nur geschieht, für diesen einen bestimmten textField (Da gibt es mehrere in ganz der gleichen Seite.) Dieser code war dafür gedacht, die Eingabe von Geld (Der Betrag der Geldbuße bezahlt) und ich wollte es einfach und leicht zu bedienen. Stellen Sie einfach Ihre label zu richten, von der rechten Seite, und es sollte.
Ich bin ein wenig verdrahtet auf Kaffee jetzt, aber ich werde alle Fragen beantworten Sie haben können. 🙂
Hier ist meine Lösung!
}
localizedStringWithFormat:
zu zeigen, das richtige Dezimaltrennzeichen. Funktioniert diese Lösung mit nicht-Bruch-Währungen (z.B. dem japanischen yen) richtig? Tut es handle Währungen, ohne eine 1⁄₁₀₀th Einheit, richtig?Schrieb ich eine open-source -
UITextField
Unterklasse um dies zu umgehen, finden Sie hier:https://github.com/TomSwift/TSCurrencyTextField
Die Herangehensweise ist ähnlich zu dem, was Lars Schneider schlägt in seinem populären beantworten. Aber meine version ist voll gekapselt in eine wiederverwendbare Komponente, die Sie überall benutzen, nur wie UITextField. Wenn Sie wählen, um die UITextFieldDelegate Methoden, die Sie können, dies ist aber nicht erforderlich.