2010-03-09 34 views
6

我有UITextfield,用戶可以放入美元金額,我希望textfield始終使用兩位小數($。##)格式化。格式必須始終保持。但我堅持如何將輸入的數字追加到文本字段中的現有數字?在UITextfield中使用NSNumberFormatter實時格式化

//This delegate is called everytime a character is inserted in an UITextfield. 
- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    if ([textField tag] == amountTag) 
    { 

     NSString *amount = string; 

//How do I append the already entered numbers in the textfield to the new entered values ? 
//?? 

     //Get new formatted value 
     NSString *newAmount = [self formatCurrencyValue:[amount doubleValue]]; 

     [textField setText:[NSString stringWithFormat:@"%@",newAmount]]; 

     return NO; 
    } 

    //Returning yes allows the entered chars to be processed 
    return YES; 
} 


-(NSString*) formatCurrencyValue:(double)value 
{ 
    NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init]autorelease]; 
    [numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4]; 
    [numberFormatter setCurrencySymbol:@"$"]; 
    [numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 

    NSNumber *c = [NSNumber numberWithFloat:value]; 
    return [numberFormatter stringFromNumber:c]; 
} 

回答

2

這裏的想法...

商店的字符串值,追加到它,然後利用它來進行操作。

在.h文件

NSMutableString *storedValue; 
@property (nonatomic, retain) NSMutableString *storedValue; 

合成它定義一個的NSMutableString。

然後做此...

- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    if ([textField tag] == amountTag) 
    { 
    [storedValue appendString:string]; 
    NSString *newAmount = [self formatCurrencyValue:([storedValue doubleValue]/100)]; 

    [textField setText:[NSString stringWithFormat:@"%@",newAmount]]; 
    return NO; 
    } 

    //Returning yes allows the entered chars to be processed 
    return YES; 
} 
+1

將需要viewDidLoad中以分配/初始化儲值並釋放它的dealloc。 – Jordan 2010-03-10 03:50:36

相關問題