我有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
中插入它,是因为有些地方的金额在金额之后。 (例如法国)
答案 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
。