UITextfiled验证1到100之间的国家/地区货币

时间:2018-07-17 10:29:49

标签: ios objective-c validation uitextfield nsnumberformatter

如何在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中。瑞典货币小数表示“,”而不是“。”我要工作计算两个输入的值,一个是整数,另一个是浮点数

2 个答案:

答案 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