首页 > 代码库 > TextFiled 中输入金额

TextFiled 中输入金额

要求: 输入的金额不能超过六位,

       小数点后面只能输入两位小数

       如果 textFIled  中第一位输入的是0 ,后面必须输入小数点,否则禁止输入

      

用到 textfiled代理方法

#pragma mark ---- textFiledDelegate ----

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

 

//当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。  

//这对于想要加入撤销选项的应用程序特别有用  

//可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。     

//要防止文字被改变可以返回NO  

//这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中  

 

     return YES;  

}  

 

给 textFiled 添加一个监听方法,监听 textFiled 的输入

 

    [self.moneyTF addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

 

具体实现方法:

@property (nonatomic, strong) NSString *max; // 默认99999.99 _max = @"99999.99";//设置一个最大值#pragma mark ---- textFiledDelegate ----- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {        _tempText = textField.text;    _tempRange = range;    _tempString = string;        if (string && string.length > 0) {        // 输入        if (_tempText.length == 0) {            if ([string isEqualToString:@"."]) {                _tempText = @"0";                return YES;            }else{                return YES;            }                    }else if (_tempText.length == 1){            if ([_tempText isEqualToString:@"0"]) {                if ([string isEqualToString:@"."]) {                    return YES;                }else{                    return NO;                }            }        }        // 输入后不可超过 ‘99999.99‘        if ([_tempText stringByAppendingString:string].floatValue > [_max floatValue]) {            return NO;        }        // 不可超过8位        if (_tempText.length >= _max.length) {            return NO;        }                NSRange docRange = [_tempText rangeOfString:@"."];        if (docRange.location != NSNotFound) {            // 已输入小数点, 禁止再输入小数点            if ([string isEqualToString:@"."]) {                return NO;            }            // 小数点后位数            NSUInteger decimals = _tempText.length - (docRange.location + docRange.length);            if (decimals == 2) {                // 小数点后两位,禁止输入任何字符                return NO;            }else if (decimals == 1){                // 小数点后一位,禁止输入 ‘0‘                if ([string isEqualToString:@"0"]) {                    return NO;                }            }        }else{            if (_tempText.length == 0) {                // 第一位                if ([string isEqualToString:@"."] || [string isEqualToString:@"0"]) {                    return NO;                }            }        }    }        return YES;}-(void)textFieldDidChange :(UITextField *)theTextField{    NSRange docRange = [_tempText rangeOfString:@"."];    if (_tempString &&_tempString.length > 0) {        //* 输入 */        if (docRange.location != NSNotFound) {            //有小数点            theTextField.text = [NSString stringWithFormat:@"%@%@",_tempText,_tempString];        }else {            if ([_tempString isEqualToString:@"."]) {                //是小数点                theTextField.text = [NSString stringWithFormat:@"%@%@",_tempText,_tempString];            }else {                //不是小数点                theTextField.text = [NSString stringWithFormat:@"%ld",_tempText.integerValue * 10 + _tempString.integerValue];            }        }    }else {            //删除        theTextField.text = [_tempText substringToIndex:_tempText.length -1];    }}

 

TextFiled 中输入金额