2012-11-22 5 views
8

私は、ユーザーが意志でUITextfieldを持ってUITextfieldで入力中と入力後に通貨記号を入れる方法は?

..私はに取り組んでいると私はここにStackOverflowのアップルのドキュメント、インターネットを検索するが、答えを見つけることに成功しなかった。この株式市場の電卓を持っています通貨の値を入力します。ユーザーが入力しているか、彼はテキストフィールドでも、彼は、ロケールに対応する通貨記号を表示するであろう値を入力し終えた後、少なくとも時に私は何を実装することです。

それは、プレースホルダのようだが、我々はXcodeで持っている一つは、Xcodeの者たちが入力する前に存在していると私はそこにあるべきたいものを入力中に、それの後に発生しません。私はその中の通貨で背景​​画像を使用することができましたが、私はアプリをローカライズすることができませんでした。

いずれかが助けることができるのであれば、私は幸いです。

ありがとうございます。

+0

あなたは「Xcodeのの通貨記号」とはどういう意味ですか? –

答えて

5

最も簡単な方法は、右揃えのテキストをテキストフィールドに重ねて配置することです(テキストが配置されたままになります)。

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

あなたがテキストフィールド内のテキストの一部としてそれを維持したい場合は、それはあなたがする必要があるとして、少し複雑になる:ユーザーがテキストフィールドを編集し始め

、通貨記号を設定しますあなたはそれをそこに置いたら、シンボルを削除するからそれらを保つ:

// 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が指摘するように、あなたがそれをユーザーに表示されているので、あなたも数フォーマッタを使用して通貨をフォーマットする必要があります。

3

あなたはこれを達成するために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; 
} 
関連する問題