HarmonyOS 鸿蒙Next TextInput的text属性包含“�”时,输入框内容被异常清空
HarmonyOS 鸿蒙Next TextInput的text属性包含“�”时,输入框内容被异常清空
Demo:
TextInput({
text: $$this.nickname
}) // … 此处省略其他配置
.onChange((value: string) => {
let newValue = value;
if (value !== undefined && value.length > 6) {
// … 此处省略其他业务
newValue = value.substring(0, 6);
}
this.nickname = newValue;
})
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
输入框显示输入最多6个字符,超过6个字符时需要toast提示。 问题触发:输入框输入“11111”,再输入一个emoji表情,超过6个字符emoji被截断,newValue = “11111�”。预期输入框显示“11111�”,但输入框实际表现为被清空了。
更多关于HarmonyOS 鸿蒙Next TextInput的text属性包含“�”时,输入框内容被异常清空的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
[@State](/user/State) private inputText: string = ""
[@Prop](/user/Prop) [@Watch](/user/Watch)('onTextUpdated') text: string = ""
public maxLength: number = 6
onTextUpdated() {
this.inputText = this.sliceTools(this.text, this.maxLength)
}
sliceTools(str: string, maxLength: number): string {
let res = "";
for (const element of str) {
console.info('输入:' + element)
if (res.length < maxLength) {
res = res + element
}
}
return res;
}
build() {
Column() {
TextInput({ text: $$this.inputText })
.onChange((value: string)=> {
this.text = value
})
}
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
更多关于HarmonyOS 鸿蒙Next TextInput的text属性包含“�”时,输入框内容被异常清空的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS 鸿蒙系统中,Next TextInput组件的text属性在包含特殊字符“�”(即Unicode中的替换字符,通常表示字符编码错误或无法识别)时,输入框内容被异常清空的问题,可能是由于系统对非法字符的过滤处理机制导致。
为了解决这个问题,可以尝试以下步骤:
-
检查字符源:确保输入到TextInput的字符串中不包含无法识别的字符编码。这通常发生在字符串从外部源(如网络、文件等)读取时,字符编码没有正确处理。
-
预处理字符串:在将字符串设置到TextInput的text属性之前,使用字符串处理函数(如正则表达式替换)来移除或替换这些特殊字符。
-
更新组件:确保你使用的HarmonyOS SDK和Next组件库是最新版本,因为新版本可能已经修复了这类问题。
-
错误处理:在代码中添加错误处理逻辑,当检测到包含特殊字符时,给出用户友好的提示,而不是直接清空输入框。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html