UITextField中的货币

时间:2015-06-09 07:42:04

标签: ios objective-c uitextfield nsnumberformatter

我有UITextField,其中用户输入了一笔钱。我试图让textField显示当前的货币符号,因为用户输入金额。

到目前为止,我能够在textFieldDIdEndEditing:中执行此操作,如何在允许您根据用户类型进行更改的方法中执行以下代码。 (例如shouldChangeTextInRange:。)这样,货币将始终显示,而不仅仅是在用户输入金额时。

这是我到目前为止所做的:

- (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;
}

我之所以不在UILabel中插入它,是因为有些地方的金额在金额之后。 (例如法国)

2 个答案:

答案 0 :(得分:0)

使用货币图像创建UIImageView。

然后根据您的要求将leftView设置为UITextField的RightView。

UIImage *cImage = [UIImage imageNamed:@"currency.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:cImage];
[imageView setFrame:CGRectMake(0, 0, 40, 40)];

// For Left
[textfield setLeftView:imageView];

// or

// For Right

[textfield setRightView:imageView];

答案 1 :(得分:0)

试试这个。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    if (textField == txtAmount) {
        if ([txtAmount.text isEqualToString:@""]) {
            txtAmount.text = @"$";
        }else{
            txtAmount.text = [NSString stringWithFormat:@"%@",txtAmount.text];
        }
    }

    return YES;
}

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    if (textField == txtAmount) {
        if ([txtAmount.text isEqualToString:@"$"]) {
            txtAmount.placeholder = @"Amount";
        }
    }
    return YES;
}

并且忘记给代表UITextField