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];

        }

     }

  • 相关阅读:
    【转自百度贴吧】把古诗最后三个字改为“日了狗”,看谁最有才!
    计划!
    [BZOJ2424][HAOI2010]订货
    [BZOJ1026][SCOI2009]windy数
    【作文】高考之外
    [AYYZVijos1761]运输问题
    [BZOJ1047][HAOI2007]理想的正方形
    [NOIP2015]代码
    新的独立博客
    不忘初心,方得始终——NOIP2016前的感悟
  • 原文地址:https://www.cnblogs.com/417460188dy/p/3990405.html
Copyright © 2011-2022 走看看