美文网首页
SWift 中UITextField中限制字符长度问题

SWift 中UITextField中限制字符长度问题

作者: 大菠萝_b08d | 来源:发表于2020-09-29 11:23 被阅读0次

    近期开发中遇到一个奇怪的问题 特此记录!

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

            //1.计算最大值有问题 21 + -1 = 21 总是等于21 不知道怎么回事?

            let result = textField.text?.count??0+(string.count-range.length)

    return result

    //3.这种计算是纠正后的

            let result = (textField.text?.count??0)+(string.count-range.length)

    return  result

            //2.分开计算就是可以的 21 + -1 = 20

            let textLeng:NSInteger= textField.text?.count??0

            let replace:NSInteger= string.count-range.length

            return textLeng+replace<=MAX_STARWORDS_LENGTH

        }

    上面代码中1计算时候能限制字符,但是限制的字符总是大于最大值+1,而且一旦达到最大值就不能操作textField 。这个bug很奇怪,最后改成2的方法就可以了。

    经过调试,发现一旦越界后最大值21 + -1 怎么计算都是打印的21 ,这难道是swift的多项计算的bug??

    如果分开计算后就好了。

    后面经过猜测可能是textField.text?.count??0这个运算导致的,尝试改成(textField.text?.count??0)然后加入计算里面,果然好了,所以在数值计算时候一定要注意运算符号的使用,尤其运算优先顺序的逻辑处理。

    相关文章

      网友评论

          本文标题:SWift 中UITextField中限制字符长度问题

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