2010-11-04 18 views
5

我已經知道如何啓用數字鍵盤並驗證字段輸入以確保數字。我想知道的是如何設置一個輸入視圖,讓我的用戶從右到左輸入數字值,如計算器或ATM機。如何在iOS中構建計算器樣式的數字輸入字段?

換句話說,我希望用戶能夠鍵入:

2 0 0 4 9 

,並有顯示爲$ 200.49

然後,一旦這樣被輸入時,我還需要或縮小這個輸入視圖作爲一個NSNumber或NSDecimalNumber,用正確的小數位的獲得值。

例如,我有一個NSDecimalNumber相當於17,50。我需要能夠將此號碼傳遞到小鍵盤視圖進行編輯,然後將編輯後的值作爲數字對象取回。

假設用戶編輯該值;他們看到的值將是

1 7 5 0 

然後他們擊退退格鍵。顯示的號碼然後是

1 7 5 

我需要得到的數字回到1.75,而不是175或17.5。

有什麼建議嗎?

回答

0

我寫了一個KeyPad,這就是讓你在一個委託堅持。它應該很容易用於ATM接口。

0

要格式化您可以使用NSNumberFormatter的字符串。事情是這樣的:

float input = 20049.0f/100.0; 

NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];  
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 

NSNumber *nsInput = [NSNumber numberWithFloat:input]; 
NSString* formattedOutput = [formatter stringFromNumber:nsInput]; 
NSLog(@"Output as currency: %@", formattedOutput); 

[formatter release]; 
+0

我打得有點與NSNumberFormatter貨幣,但我有一些問題,在那裏,如果我嘗試使用numberFromString解析字符串返回到編輯後的浮動,它會總是返回零(顯然是因爲貨幣符號缺失?)。這是將字符串值轉換回數字的最佳方法嗎? – 2010-11-04 22:10:07

+0

嗯。當你從字符串轉換爲數字時,你是否嘗試過[formatter setNumberStyle:NSNumberFormatterDecimalStyle]? – rob 2010-11-04 22:26:38

0

我已經實現SATextField具有此功能的內置。它就像一個UITextField一樣工作,並具有相同的外觀。僅將fixedDecimalPoint財產設置爲YES

編輯:我已經創建了一個包含此功能的新項目:STAControls(具體而言,使用STAATMTextField - 它甚至支持.進入!)。不同的是,該項目已實現的UITextField一個合法的子類,而SATextField僅僅是一個容器類外殼上的UITextField實例。

相關問題