给editbox赋值number引发无法调起输入框的bug

  • Creator 版本:2.0.10

  • 目标平台: iOS

给editbox赋值一个number,在ios上会出现无法调起输入框的bug
查看了引擎js代码,editbox的string赋值,其实内部调用的cc.Label的string赋值,而cc.Label的string在做set的时候会将value.toString(),所以number转成了string

但是因为获取内容是调用editbox.string//这里有bug,引擎源代码在最后

ios上的edit唤起是在jsb-adapter/jsb-builtin.js的jsb.inputBox.show这里打印了options,发现defaultValue是一个number,导致JSB_showInputBox这里在ok = obj->getProperty("defaultValue", &tmp);获取的时候,tmp.isString断言失败 SE_PRECONDITION2(ok && tmp.isString(), false, "defaultValue is invalid!"); ```js JS: options>>>>> defaultValue 100 number JS: options>>>>> maxLength 8 number JS: options>>>>> multiple false boolean JS: options>>>>> confirmHold false boolean JS: options>>>>> confirmType done string JS: options>>>>> inputType text string JS: options>>>>> originX 281.25 number JS: options>>>>> originY 303.71874999999994 number JS: options>>>>> width 187.5 number JS: options>>>>> height 46.875 number ``` 应该修改引擎cceditbox ```js string: { tooltip: CC_DEV && 'i18n:COMPONENT.editbox.string', get () { //这里get了,所以是number,set的时候是string return this._string; }, set(value) { //value = value.toString() if (this.maxLength >= 0 && value.length >= this.maxLength) { value = value.slice(0, this.maxLength); }
            this._string = value;
            if (this._impl) {
                this._updateString(value);
            }
        }
    },

请看下这个帖子中的PR:
https://forum.cocos.com/t/cocos-creator/81800
有这个问题的修复。