好吧,这有点晚了,但我想我还是会试一试。这可能更像是一种解决方法,并且可能是混乱的代码,但它对我有用。我在 IB 中连接了一个标签和一个隐藏的文本字段,并使用 UITextFieldDelegate 委托编写了这段代码。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField == fineHiddenTextField) {
NSString *fineText = [textField.text stringByReplacingCharactersInRange:range withString:string];
if ([fineText length] == 0) {
NSString *emptyFine = @"0.00";
float fineValue = [emptyFine floatValue];
fineEntryLabel.text = [NSString stringWithFormat:@"%.2f", fineValue];
} else if ([fineText length] == 1) {
NSString *firstDec = [NSString stringWithFormat:@"0.0%@", fineText];
float fineValue = [firstDec floatValue];
fineEntryLabel.text = [NSString stringWithFormat:@"%.2f", fineValue];
} else if ([fineText length] == 2) {
NSString *secondDec = [NSString stringWithFormat:@"0.%@", fineText];
float fineValue = [secondDec floatValue];
fineEntryLabel.text = [NSString stringWithFormat:@"%.2f", fineValue];
} else {
int decimalPlace = [fineText length] - 2;
NSString *fineDollarAmt = [fineText substringToIndex:decimalPlace];
NSString *fineCentsAmt = [fineText substringFromIndex:decimalPlace];
NSString *finalFineValue = [NSString stringWithFormat:@"%@.%@", fineDollarAmt, fineCentsAmt];
float fineValue = [finalFineValue floatValue];
fineEntryLabel.text = [NSString stringWithFormat:@"%.2f", fineValue];
}
//fineEntryLabel.text = [NSString stringWithFormat:@"%.2f", fineValue];
return YES;
}
}
不完全是最整洁的,但它确实完成了工作。最初的 if 语句只是为了确保这只发生在这个特定的 textField 上(因为在同一页面中有多个。)这段代码用于输入钱(支付的罚款金额),我想要它简单易用。只需将您的标签设置为从右侧对齐,它应该。
我现在对咖啡有点迷恋,但我会回答你可能有的任何问题。:)