1

我希望用户在文本字段中输入一个金额,并且我希望在输入值时对其进行格式化。这意味着当用户输入第 4 位数字时,会在适当的位置出现一个逗号,表示千位。示例:3,450

现在,我正在尝试使用文本字段委托方法“shouldChangeCharactersInRange”和 NSNumberFormatter。不幸的是,我没有取得任何成功。有人能指出我正确的方向吗?谢谢你!

4

1 回答 1

4

一种选择是UILabel在您的UITextField. 注册为delegateof theUITextField并实现:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

然后每次用户键入时,都会调用此方法,允许您获取新值,将其转换为整数并通过 NSNumberFormatter 传递,然后更新 UILabel 以显示此格式化值。

static NSNumberFormatter *formatter;

- (BOOL)textField:(UITextField *)aTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{   
    NSString *textFieldValue = [aTextField.text stringByAppendingString:string];

    if (range.length > 0)
        textFieldValue = [aTextField.text substringToIndex:range.location];

    if ([textFieldValue isEqualToString:@""])
        self.formattedLabel.text = textFieldValue;
    else
    {
        NSDecimalNumber *newValue = [[NSDecimalNumber alloc] initWithString:textFieldValue];
        if (!formatter) formatter = [[NSNumberFormatter alloc] init];
        formatter.numberStyle = NSNumberFormatterDecimalStyle;
        self.formattedLabel.text = [formatter stringFromNumber:newValue];
    }

    return YES;
}
于 2011-03-03T22:54:00.670 回答