zoukankan      html  css  js  c++  java
  • IOS textField(textview)字数判断

    textfield 有时会需要设置字数限制,如果只是英文或者符号,可以直接在以下代理方法中判断字数

    -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
        return YES;
    }

    但是,如果是中文且开启联想的情况下,可能选中(高亮)的字也会加入到字数统计,导致最后的几个字输入失败
    解决方法给textfield 添加一个事件,实时监听text的改变

    [textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
    (void)textFieldDidChange:(UITextField*)textField{
        NSString *lang = textField.textInputMode.primaryLanguage;//键盘输入模式
        if ([lang isEqualToString:@"zh-Hans"]) {//中文
            if (textField == _nickTextField) {
                UITextRange *selectedRange = [textField markedTextRange];
                if (!selectedRange) {//无高亮
                    if (textField.text.length>8) {
                        textField.text = [textField.text substringToIndex:8];
                        [ProgressHUD showWithStatus:@"昵称最多8位"];
                    }
                }
            }
        }else{//非中文
            if (textField.text.length>8&&textField == _nickTextField) {
                textField.text = [textField.text substringToIndex:8];
                [ProgressHUD showWithStatus:@"昵称最多8位"];
            }
        }
        if (textField==_nickTextField) {
            NSLog(@"_nickTextField:%@",_nickTextField.text);
        }else if (textField==_passWordTextField){
            NSLog(@"_passWordTextField:%@",_passWordTextField.text);
        }else{
            
        }
    }

    相对于textfield而言,textView 更先进一些,他直接提供了text更改完成的代理方法

    -(void)textViewDidChange:(UITextView *)textView{
    
        if (textView.text.length) {
            _placeLabel.hidden = YES;
        }else{
            _placeLabel.hidden = NO;
        }
        NSString *lang = textView.textInputMode.primaryLanguage;//键盘输入模式
        static NSInteger length = 0;
        if ([lang isEqualToString:@"zh-Hans"]){
            UITextRange *selectedRange = [textView markedTextRange];
            if (!selectedRange) {//没有有高亮
                length = textView.text.length;
            }else{
                
            }
        }else{
            length = textView.text.length;
        }
    }
  • 相关阅读:
    ASP.NET + EF + SQL Server搭建个人博客系统新手系列(一):界面展示
    PHP中文乱码分类及解决办法大全
    分享一个根据具体的日期判断星座的PHP函数
    WHERE条件中or与union引起的全表扫描的问题
    linux下SVN CVS命令大全
    Ubuntu装完后要做的几件事
    Table被web编程弃用的原因
    PHP json_decode返回null解析失败原因
    powerpoint教程资料,PPT的
    一些matlab教程资源收藏,使用matlab编程的人还是挺多的
  • 原文地址:https://www.cnblogs.com/zhhl/p/5570150.html
Copyright © 2011-2022 走看看