5

iPhoneアプリにテキストフィールドがあり、数字を入力するだけで済むatms入力と同様の入力を実装したいと思います(小数点以下の文字入力は不要です)。このテキストフィールドに数字パッドを使用できるようにしたいです。たとえば、テキスト フィールドには最初に次のように表示されます。

0.00

ユーザーがシーケンス 1234 を入力すると、テキスト フィールドは次のようになります。

12.34

ユーザーが削除ボタンを押した場合も更新する必要があります。

4

5 に答える 5

6

フォーマットについては、 NSNumberFormatterを使用して先頭と末尾のゼロを表示する方法を説明しているこの他のSO投稿の詳細に非常に満足していると思います。その投稿から引っ張って微調整しました:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setFormat:@"##0.00"];

NSNumber* input; // Hook in your input
NSString* output = [NSString stringWithFormat:@"%@", [formatter stringFromNumber:input]]; // Hook to your text field

1234の入力を12.34に変換する(そしておそらく12の入力を0.12に変換する)ために、入力の小数点以下を常に2桁シフトしていると考えてください。

// int storedInput has already been set to 1234
int input = 5; // Next button that was pressed
storedInput = storedInput * 10 + input; // 1234 * 10 + 5 = 12345
float displayedValue = input * .01;  // 123.45
NSNumber* output = [NSNumber numberWithFloat:displayedValue];

これらの2つのコードスニペットは、プログラムにこれらの概念を実装する方法のアイデアを提供するはずです。削除については...storedInputを0に設定するだけです。値を更新するために、キーボードから新しい入力があるたびにこれらのコードを呼び出すのはあなた次第です。

于 2011-02-18T15:36:20.870 に答える
1

簡単です。テキストフィールドオブジェクトのeditingChangedイベントをクラスのメソッドにフックするだけで、「editingChanged」メソッドが呼び出されるたびに、次のようにすべての「余分な」文字(この場合は小数点)を削除します。

NSString *newContents = self.AtmTextField.text;
newContents = [newContents stringByReplacingOccurrencesOfString:@"." withString:@""];

次に、newContents を好きなように再フォーマットし、UITextField のテキストとして再設定します。

于 2011-02-18T15:31:38.977 に答える
1

この機能が組み込まれているソースSATextFieldを開きました。に設定するだけfixedDecimalPointですYES

編集:この機能を含む新しいプロジェクトを作成しました: STAControls (具体的には、使用STAATMTextField-エントリもサポートしています.! )。違いは、このプロジェクトがインスタンスを収容する単なるコンテナ クラスであるのUITextFieldに対し、正当なサブクラスとして実装されていることです。SATextFieldUITextField

于 2013-05-08T12:41:48.813 に答える
0

私のアドバイス?テキストフィールドを取り除きます。標準のキーボードを取り除き、タスク用に独自の UIButton を追加します。

私はアプリのために似たようなことをしました。UITextField とデフォルトのキーボードから始めましたが、しばらくすると、12 個の UIButton と 1 個の UILabel を使用すると、はるかに簡単になることがわかりました。

于 2011-02-18T15:25:56.750 に答える