监听 限制 TextView 字数的正确姿势

swift

//MARK: - TextViewDelegate
func textViewDidChange(_ textView: UITextView) {
//获得已输出字数与正输入字母数
    let selectRange = textView.markedTextRange
    //获取高亮部分 - 如果有联想词则解包成功
     if let selectRange = selectRange {
            let position =  textView.position(from: (selectRange.start), offset: 0)
                if (position != nil) {
                    return
                }
            }
                let textContent = textView.text
                let textNum = textContent?.characters.count
            //截取
            if textNum! > 50 {
                let index = textContent?.index((textContent?.startIndex)!, offsetBy: 50)
                let str = textContent?.substring(to: index!)
                textView.text = str
thisContentNumLabel.text = 50/50

            }
thisContentNumLabel.text = String(format: "%ld/50",textView.text.characters.count)

    }

OC

- (void)textViewDidChange:(UITextView *)textView{

    UITextRange *selectedRange = [textView markedTextRange];
    //获取高亮部分
    UITextPosition *pos = [textView positionFromPosition:selectedRange.start offset:0];
    
    //如果在变化中是高亮部分在变,就不要计算字符了
    if (selectedRange && pos) {
        return;
    }
    int length = (int)textView.text.length;
    if (length>50) {
        textView.text = [textView.text substringToIndex:50];
   self.textLengthLabel.text  = 50/50;
    }else{
        self.textLengthLabel.text = [NSString stringWithFormat:@"%d/%d",length,50];
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 羞于示人 我是谁? 真的不知道,越去想(用头脑的居多),越不得我的解(姐)。 也许我知道我不是什么,what I ...
    轻松态真性情阅读 141评论 0 0
  • 时间的沙漏,一点点的流动着,从容不迫,从不寂寞。我也逐渐从哀怒和苦涩的生活中释放出自己。将所有不快乐抽离出去,让那...
    L__Smile阅读 204评论 0 0
  • 接龙客栈灌水区正式成立,无论你是来自哪个专题的,想发牢骚的,想发照片的,想写点日记的,想……都可以来我们灌水区哈!...
    蔷薇下的阳光阅读 305评论 46 3
  • 今天看朝夕打卡,我已经连续35天早起了,不知是孕激素的原因还是什么别的原因,每天睡到4点多便开始数羊,刚开始的日子...
    勤快的毛球球阅读 229评论 0 0
  • 01 关于未来,你想过吗? 是一份稳定的工作,每天定时上班、下班,做着同样的事情,升职或许会很慢,加薪则是靠日子的...
    花焚城阅读 209评论 0 0