美文网首页
UITextView、UITextField限制字符输入

UITextView、UITextField限制字符输入

作者: 孤雁_南飞 | 来源:发表于2021-06-21 12:01 被阅读0次

下面是 UItextView 的处理,
当然 UItextField 在下面方法同样处理就好了

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    //允许删除
    
    if text.isEmpty && range.length > 0 {
        return true
    } else {
        //超过最大字符,一个字都不需要加
        //举个栗子:却一个字时候,无法添加一个字以上的文字
        if textView.text.count - range.length + text.count > 20 {
            return false
        } else {
            return true
        }
    }
}
func textViewDidChange(_ textView: UITextView) {
    let selectedRange = textView.markedTextRange
    //获取高亮部分
    let pos = textView.position(from: selectedRange?.start ?? UITextPosition(), offset: 0)
    //如果在变化中是高亮部分在变,就不要计算字符了
    if selectedRange != nil && pos != nil {
        return
    }
    let count = textView.text.count
    print("\(count)/20")
}

OC 部分


- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
      
    if ([text isEqualToString:@""] && range.length > 0) {
        //删除
        return YES;
    }else{
        //超过最大字符,一个字都不需要加
        //举个栗子:却一个字时候,无法添加一个字以上的文字
        if (textView.text.length - range.length + text.length > 20) {
            return NO;
        }else{
            return YES;
        }
    } 
}

- (void)textViewDidChange:(UITextView *)textView
{
    UITextRange *selectedRange = [textView markedTextRange];
    //获取高亮部分
    UITextPosition *pos = [textView positionFromPosition:selectedRange.start offset:0];
    
    //如果在变化中是高亮部分在变,就不要计算字符了
    if (selectedRange && pos) {
        return;
    }
    NSUInteger count = textView.text.length;
    NSLog(@"%ld/20",  (unsigned long)count); 
}

相关文章

网友评论

      本文标题:UITextView、UITextField限制字符输入

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