美文网首页
输入框 代理实时监听输入内容 以及限制输入纯数字金额

输入框 代理实时监听输入内容 以及限制输入纯数字金额

作者: 做个稻草人 | 来源:发表于2019-12-23 11:16 被阅读0次

    输入框 代理实时监听输入内容 以及限制输入纯数字金额

        UITextField *txtField = [[UITextField alloc] initWithFrame:CGRectMake(10, 350, 200, 40)];

        txtField.backgroundColor = [UIColor lightGrayColor];

        txtField.delegate=self;

        [self.viewaddSubview:txtField];

    实现输入框代理,直接打印textField.text(比输入的内容少一位字符)监听不到当前输入的字符。string是当前输入的字符 这两个拼接到一起就是实时输入的内容。

    //UITextFieldDelegate 代理方法

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

        NSString*txtStr = [NSStringstringWithFormat:@"%@%@",textField.text,string];//实时输出内容

    //第一种方式

    //    NSString * str = [NSString stringWithFormat:@"%@%@",textField.text,string];

    //    //匹配以0开头的数字

    //    NSPredicate * predicate0 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",@"^[0][0-9]+$"];

    //    //匹配两位小数、整数

    //    NSPredicate * predicate1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",@"^(([1-9]{1}[0-9]*|[0])[.]?[0-9]{0,2})$"];

    //    return ![predicate0 evaluateWithObject:str] && [predicate1 evaluateWithObject:str] ? YES : NO;

    /**第二种方式*/

        NSString *toString = [textField.text stringByReplacingCharactersInRange:range withString:string];

        if(toString.length>0) {

        NSString *stringRegex = @"(\\+|\\-)?(([0]|(0[.]\\d{0,2}))|([1-9]\\d{0,4}(([.]\\d{0,2})?)))?";

        NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", stringRegex];

        BOOLflag = [phoneTestevaluateWithObject:toString];

        if(!flag) {

            returnNO;

            }

        }

        PPLog(@"textfield--:%@---------:%ld----------:%@/n全部内容:-%@",textField.text,range.location,string,txtStr);

        return YES;

    }

    还有一种不需要代理的的实时监听

    [textField addTarget:selfaction:@selector(changedTextField:)forControlEvents:UIControlEventEditingChanged];

    #pragmamark -给每个cell中的textfield添加事件,只要值改变就调用此函数

    -(void)changedTextField:(id)textField{

    NSLog(@"值是---%@",textField.text);

    }

    相关文章

      网友评论

          本文标题:输入框 代理实时监听输入内容 以及限制输入纯数字金额

          本文链接:https://www.haomeiwen.com/subject/uofznctx.html