cc.Editbox 遇到的一个问题,请求协助

引擎版本:2.4.3

项目中出现了一个需求,在输入的时候判定文字的字符数量,然后进行数量控制
所以我用到了 ‘ text-changed ’这个属性,进行输入时的监听。

代码如下

OnEditboxChanged() {

    let msg = this.nickName.string;

    let msg2 = '';

    let _length = 0;

    let count = 0;

    for (let index = 0; index < msg.length; index++) {

        if (PubFunction.instance.IsChinese(msg[index])) {

            _length = _length + 3;

            count++;

        }

        else {

            _length++;

            count++;

        }

        if (_length > 24) {

            this.nickName.string = msg2;

            continue;

        }

        else {

            msg2 = msg2 + msg[index];

            _length++;

        }

    }

    this.nickName.string = msg2;
    //this.nickName.maxLength = count;

}

当 输入的字符时中文时,该字符算为3个字节,总字节不超过24,所以我试了两种方法,更改editbox.string的值,还有更改editbox.maxlength的值,结果都是在激活时无法对显示的文本进行控制,只有在离开激活状态的时候,文本发生了更改。使得效果如同 editing-did-ended 一般。我虽然有其他的解决方法进行处理,但是这个问题也确实存在,希望引擎组大佬们进行检测。

欸,在论坛里没有地位弱鸡,瑟瑟发抖 :eyes:

人工置顶一下

Cocos C姐

editbox焦点激活时,修改editbox属性无效,取消焦点时才会生效

editbox焦点激活时,修改editbox属性无效,取消焦点时才会生效6

抱歉,不是很理解你表达的那个意思。

点击editbox组件,会激活editbox组件,这时候可以进行输入,输入时会触发text-changed事件,在触发这个事件时,更改editbox.string属性,或者更改editbox.maxlength属性,都没有用,输入的什么显示的就是什么,之后点击旁边editbox组件会取消激活,这时候editbox.string才会生效。
比如
输入‘123456’,在text-changed事件中将editbox.string改为111111,界面上显示的还是‘123456’,这时候取消激活状态,界面上才会显示为‘111111’。

确认了下,目前暂时不支持这种操作哈,给你们带来的不便,感到非常抱歉!!

阿哲。。。。。。。。啥时候加上 :rofl: :joy: