8

私が取り組んでいるこの株式市場の計算機があり、Apple のドキュメント、インターネット、ここ StackOverFlow を検索しましたが、答えを見つけることができませんでした..

ユーザーがUITextfield通貨値を入力する があります。私が実装したいのは、ユーザーが入力しているとき、または少なくとも値を入力し終わった後、テキストフィールドに自分のロケールに対応する通貨記号も表示することです。

これはプレースホルダーのようなものですが、xcode にあるものではありません。入力する前に xcode があり、入力中と入力後に必要なものがそこにあるはずです。通貨を含む背景画像を使用できますが、アプリをローカライズできません。

誰かが助けてくれれば、私は感謝します。

前もって感謝します。

4

2 に答える 2

6

NSNumberFormatterこれを達成するには使用する必要があります。

次のコードを試してみてください。これにより、値を入力して編集を終了すると、値は現在の通貨でフォーマットされます。

-(void)textFieldDidEndEditing:(UITextField *)textField {

    NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
    [currencyFormatter setLocale:[NSLocale currentLocale]];
    [currencyFormatter setMaximumFractionDigits:2];
    [currencyFormatter setMinimumFractionDigits:2];
    [currencyFormatter setAlwaysShowsDecimalSeparator:YES];
    [currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

    NSNumber *someAmount = [NSNumber numberWithDouble:[textField.text doubleValue]];
    NSString *string = [currencyFormatter stringFromNumber:someAmount];

    textField.text = string;
}
于 2012-11-25T14:58:51.313 に答える
5

最も簡単な方法は、左揃えのテキストを持つテキスト フィールドに対して、右揃えのテキストのラベルを配置することです。

ユーザーがテキストフィールドの編集を開始したら、通貨記号を設定します。

    - (void)textFieldDidBeginEditing:(UITextField *)textField {
        self.currencyLabel.text = [[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol];
    }

それを textField のテキストの一部として保持したい場合は、そこに配置したシンボルを削除しないようにする必要があるため、もう少し複雑になります。

// Set the currency symbol if the text field is blank when we start to edit.
- (void)textFieldDidBeginEditing:(UITextField *)textField {
    if (textField.text.length  == 0)
    {
        textField.text = [[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol];
    }
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSString *newText = [textField.text stringByReplacingCharactersInRange:range withString:string];

    // Make sure that the currency symbol is always at the beginning of the string:
    if (![newText hasPrefix:[[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol]])
    {
        return NO;
    }

    // Default:
    return YES;
}

@Aadhiraが指摘しているように、ユーザーに表示しているため、数値フォーマッターを使用して通貨をフォーマットする必要もあります。

于 2012-11-25T15:31:49.237 に答える