2012-11-22 104 views
8

我有我的工作,這股市場計算器和我搜索蘋果文檔,上網,在這裏StackOverflow上,但沒有成功地找到了答案..如何在UITextfield中輸入時輸入貨幣符號?

我有一個UITextfield其中用戶將輸入貨幣值。我想要實現的是當用戶正在輸入時,或者至少在輸入值之後,文本字段還會顯示與他所在語言環境相對應的貨幣符號。

這就像一個佔位符,而不是一個我們在Xcode,導致Xcode的是有我們之前輸入和一個我想應該有打字時和之後。我可以使用帶有貨幣的背景圖片,但之後我無法本地化應用程序。

因此,如果任何人能幫助,我將不勝感激。

在此先感謝。

+0

你說的「Xcode的貨幣符號」是什麼意思? – 2012-11-25 14:06:31

回答

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; 
} 
相關問題