如何验证金额文本值

时间:2015-05-19 13:08:26

标签: ios objective-c iphone uitextfield

我正面临着如何在uitextfiled中验证金额值的小问题。我有一个文本的限制应该大于Rs.10和值之间的范围是Rs.99999。如果用户输入无效金额,如Rs.01,02,04,09,应避免使用此类号码

我刚刚用简单的方法调用我的函数:

 if ([amount.text length]>=2 && [amount.text length]<=5) {

}else{


    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"error" message:@"Plz enter the amout Min 10Rs" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [alert show];
    return;
}

5 个答案:

答案 0 :(得分:1)

请查看以下代码:

if ([amount.text doubleValue]>=10 && [amount.text doubleValue]<99999){

}
else{
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"error" message:@"Plz enter the amout Min 10Rs" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [alert show];
    return;
}

答案 1 :(得分:1)

您应该使用NSNumberFormatter进行解析。它具有高度可配置性,如果输入已损坏,则可轻松说明。除此之外,它还有<xsl:stylesheet version="2.0" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xhtml xsl xs"> <xsl:output method="xhtml" indent="yes"/> <xsl:key name="idcode" match="/users/idcode" use="@id"/> <xsl:template match="/"> <output> <xsl:apply-templates select="users/user" /> </output> </xsl:template> <xsl:template match="users/user"> <systemUser> <xsl:value-of select="."/> </systemUser> <xsl:apply-templates select="key('idcode', tokenize(@idcode, ','))"/> </xsl:template> <xsl:template match="idcode"> <systemId value="{.}"/> </xsl:template> </xsl:stylesheet> minimum属性。

答案 2 :(得分:0)

 int val = amount.text.integerValue
if (val > 10 && val < 99999){

}
else{


    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"error" message:@"Plz enter the amout Min 10Rs" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [alert show];
}

答案 3 :(得分:0)

您应该使用:

- (BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string 

您可以完全控制文本字段中显示的内容。由于该方法返回BOOL值,因此如果满足您的要求,您可以接受替换字符串(通过返回YES),或者通过返回NO来保留旧文本。

不要忘记将委托分配给UITextField,以便调用此方法。

有关详情,请查看:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextFieldDelegate_Protocol/#//apple_ref/occ/intfm/UITextFieldDelegate/textField:shouldChangeCharactersInRange:replacementString

修改

可能的解决方案:

  1. 如果文本字段只应采用数字字符,则应将键盘类型设置为:

    textfield.keyboardType = UIKeyboardTypeNumberPad;

  2. 在上述方法的实现中,你可以写:

    NSInteger value = [textField.text stringByReplacingCharactersInRange:range withString:string].integerValue; if (value >=10 && value <= 99999){ return YES; }else{ // inform the user the input is invalid return NO; }

答案 4 :(得分:0)

使用以下代码限制用户输入单号和6号号

注意:使用KeyboardType作为UIKeyboardTypeNumberPad

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (textField.text.length >= 5 && range.length < 2)
    {
        return NO; //Not allowing the user to enter single character or greater than 5 characters
    }
    else
    {
    return YES;
    }

}

希望它可以帮助你......!