zoukankan      html  css  js  c++  java
  • UITextView textViewDidChange 限制字符长度崩溃问题 解决办法

    为了限制uitextview输入的字符数,一般采取如下做法:

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range

     replacementText:(NSString *)text

    {

        //判断输入的字符,是否超过界限

        NSString *str = [NSString stringWithFormat:@"%@%@", textView.text, text];

        if (str.length > kMaxLen)

        {

            textView.text = [str substringToIndex:kMaxLen];

            return NO;

        }

        return YES;

    }

     但是,在汉语拼音输入状态下,如果有键盘联想汉字输入,则无法回调到该函数,所以可以一直联想输入下去,做不到限制字符数量的目的,为了解决这个问题,我们在textViewDidChange进行限制。

    - (void)textViewDidChange:(UITextView *)textView

    {

        if ( textView.text.length > kMaxLen)

        {

            textView.text = [textView.text substringToIndex:kMaxLen];

        }

     }

    此时,如果在拼音状态下输入会有crash ,因为汉语拼音状态下,联想出的汉字等待用户选择,在用户选择前的状态下,不能改变textView.text。解决办法:

    - (void)textViewDidChange:(UITextView *)textView

    {

        if (textView.markedTextRange == nil && textView.text.length > kMaxLen)  //加上 textView.markedTextRange == nil判断,当此属性为nil时,代表不在这种联想输入等待确定状态。

        {

            textView.text = [textView.text substringToIndex:kMaxLen];

        }

     }

  • 相关阅读:
    文件工具类之FileUtils
    JAVA8日期工具类
    mybatis模糊查询匹配汉字查询不出来数据,匹配字符和数字却可以的问题解决
    问到ConcurrentHashMap不要再提Segment了
    开发中常用工具
    Spring 如何解决循环依赖?
    JVM8基础概念总结
    String字符串相等判断
    面试再也不怕问到HashMap(二)
    面试再也不怕问到HashMap(一)
  • 原文地址:https://www.cnblogs.com/417460188dy/p/3990405.html
Copyright © 2011-2022 走看看