我希望用户在文本字段中输入一个金额,并且我希望在输入值时对其进行格式化。这意味着当用户输入第 4 位数字时,会在适当的位置出现一个逗号,表示千位。示例:3,450
现在,我正在尝试使用文本字段委托方法“shouldChangeCharactersInRange”和 NSNumberFormatter。不幸的是,我没有取得任何成功。有人能指出我正确的方向吗?谢谢你!
我希望用户在文本字段中输入一个金额,并且我希望在输入值时对其进行格式化。这意味着当用户输入第 4 位数字时,会在适当的位置出现一个逗号,表示千位。示例:3,450
现在,我正在尝试使用文本字段委托方法“shouldChangeCharactersInRange”和 NSNumberFormatter。不幸的是,我没有取得任何成功。有人能指出我正确的方向吗?谢谢你!
一种选择是UILabel
在您的UITextField
. 注册为delegate
of 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;
}