当前位置: 首页 > news >正文

「Unity3D」TextMeshPro的TMP_InputField在改变高度时,其中textComponent移动的问题解决

如图所示, 在多行模式下,换行会推动textComponent的区域移动,这是无法通过代码(AnchorPositionY)调整的,因为TMP_InputField内部更新,会自动调整这个位移。

第一,多行文本的增与删。

但这就会产生一个问题,如粘贴多行删除多行时,就会导致textComponent的位移——此时,如果没有触发滚动条,就只能使用键盘上下移动来调整,在触摸屏则没有办法调整。

要解决这个问题,可以调用TMP_InputField的一个函数,即public void ProcessEvent(Event e),然后传入KeyCode.PageDown事件,就可以触发一个内置函数private void MovePageDown(bool shift),来直接滚动textComponent到底部。

 this.ProcessEvent(Event.KeyboardEvent("page down"));

第二,动画增加输入高度。

另一种情况,如果使用Tween动画,来动态调整TMP_InputField的高度,即:在OnValueChanged中监测到换行时,动画增加高度。

但动画是一个过程,而OnValueChanged立即返回后,由于文本高度增加,TMP_InputField还没来得及增加,结果就会产生textComponent的位移,导致文本上移不可见。

要解决这个问题,就要既保留动画,也同时增加TMP_InputField高度,使得textComponent不触发移动。

方法就是,增加InputFieldPlus高度,但将TextArea其下移,并同步InputBar(输入区域整体)高度与TextArea上移的动画。

如图所示:

  • OnValueChanged中,增加InputFieldPlus的高度,这样textComponent就不会出现移动。
  • TextArea下移,抵消InputFieldPlus的高度变化。
  • InputBar高度增加动画开启时,同步TextArea上移动画开启,这样视觉上,就是InputBar(输入区域)与其中的文本,一起动画扩展。
http://www.xdnf.cn/news/665443.html

相关文章:

  • VMware Live Recovery 和 VMware Data Recovery区别
  • python 报错记录-Linux 退出python环境
  • Python Day34
  • 聚合CPA/CPS拉新分销平台开发:2025年核心功能与未来趋势解析
  • HarmonyOS运动开发:如何绘制运动速度轨迹
  • day 22 练习——泰坦尼克号幸存者预测
  • Dify中的GoogleSearch工具插件开发例子
  • 华为OD机试真题——新工号中数字的最短长度(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 【AI论文】LLaDA-V:具备视觉指令微调能力的大型语言扩散模型
  • 基于 LoRA 和 GRPO 的 Qwen2.5-3B 数学推理模型微调示例
  • java学习日志——Spring Security介绍
  • 二维坐标变换、三维坐标变换、综合变换
  • 人工智能工程师学习路线总结(上)
  • MySQL的日志和备份
  • 热点数据的统计到应用
  • C 语言学习笔记二
  • 202505系分论文《论模型驱动分析方法及应用》
  • FallbackHome的启动流程(android11)
  • 泪滴攻击详解
  • MDM在智能健身设备管理中的技术应用分析
  • 计算机系统简介(二)
  • python打卡day36@浙大疏锦行
  • C++ STL Queue容器使用详解
  • SPL 轻量级多源混算实践 1 - 在 RDB 上跑 SQL
  • vue3 浮点数计算
  • 码蹄集——矩形相交
  • 【大模型】分词(Tokenization)
  • unix的定时任务和quartz和spring schedule的cron表达式区别
  • C# 中 INI 文件操作扩展类:轻松管理配置文件
  • 开发一个交易所大概需要多少成本