记一次团结引擎 + iOS 26 上的 TMP InputField 乱码 Bug
一句话速览 团结引擎 1.8 打包到 iOS 26 上时,若 TMP InputField 开启了 Hide Mobile Input,输入字符后 InputField 会先失活再重新获得焦点,此时文本被全选,再输入任意字符,开头的第一个字符变成乱码。这是 Unity 2021 时代的老 Bug 在团结引擎上的复现。 一、场景:一个"本不该出问题"的输入框 故事从一个非常常规的需求开始:给 iOS 端的用户做个输入框,需要屏蔽掉系统键盘自带的输入预览条(就是那个键盘上方悬浮的白色条)。 做法也很常规——勾上 TMP_InputField 的 Hide Mobile Input(代码里就是 shouldHideMobileInput = true)。 在编辑器里测试一切正常。打包上 iOS 26 真机之后,Bug 出现了。 二、现象:精确到每一步的复现路径 预期的行为 步骤 正常应发生的事 ① 点击输入框 聚焦,弹出键盘 ② 输入若干字符 输入框正常展示字符 ③ 点击输入框外部再点回来 光标定位到最后,继续输入正常 ④ 多轮输入 全文无乱码,一切正常 实际的行为(Bug 复现路径) 步骤 实际发生的事 ① 点击输入框 ✅ 聚焦,键盘弹出 ② 输入若干字符(如 “Hello”) ✅ 显示正常 ③ 输入框失活 → 再激活(获得焦点) ⚠️ 文本被全选(全部高亮) ④ 再输入任意字符(如 “X”) ❌ 开头的字符变成乱码,如 “䮙ello” 或类似不可识别字符 这个 Bug 不是偶发——稳定复现,只要 Hide Mobile Input + 输入框经历"失活→重新聚焦"这个流程,必现。 ...