-
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);
}
}
},