如何在1到100个货币值(最多2个十进制值)之间验证UITextfield。
有效。 0.25 99.99,1.99,100.00。 其他国家的货币也用小数表示。 0,25 99,99 1,99 100,00
无效 00.25、100.25、0000000.00、0.125、9.567
IOptionsSnapshot<SupplyApiClientHttpSettings> settings
无法正常工作,无法按下,UITextfield中。瑞典货币小数表示“,”而不是“。”我要工作计算两个输入的值,一个是整数,另一个是浮点数
答案 0 :(得分:0)
在UItTxtfield委托方法中,尝试以下代码。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSInteger Currency = [textField.text integerValue];
if(Currency >= 100)
{
return NO;
}
else
{
NSString *enteredCurrency=textField.text;
if([enteredCurrency containsString:@"."])
{
NSArray *array=[enteredCurrency componentsSeparatedByString:@"."];
if([array[1] length] >= 2 || [array[0] length] >= 2)
{
return NO;
}
else
{
return YES;
}
}
else
{
return YES;
}
}
}
答案 1 :(得分:0)
不建议您由yourlsef实施,因为它不可扩展。您需要使用NumberFormatter
(或ObjC使用NSNumberFormatter
)
let formatter = NumberFormatter()
formatter.numberStyle = NumberFormatter.Style.currency
formatter.allowsFloats = false
formatter.maximumFractionDigits = 2 //you get to control how to present the price.
formatter.locale = locale //This should be the country Locale you need. for example: "en-us"
请注意,NSLocale
也使您可以访问分组分隔符和十进制分隔符,因此以后可以根据需要进行检查。
formatter.currencyGroupingSeparator = locale.groupingSeparator
formatter.decimalSeparator = locale.decimalSeparator