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;
        }
    }
  • 相关阅读:
    contentSize,contentOffset,contentInset整理
    UITableViewCell的移动
    怎么修改Xcode新项目或新文件最上面的Creat By XXX
    objc_setAssociatedObject 关联对象
    Python strip()方法
    Python函数中*args和**kwargs来传递变长参数的用法
    python闭包
    Grand Garden思维题
    Circles Inside a Square(几何题)
    Matrix Transformation(模拟)
  • 原文地址:https://www.cnblogs.com/zhhl/p/5570150.html
Copyright © 2011-2022 走看看