UGUI学习之InputField

uGUI的inputfield组件:

  • 点击input区域或点击input之外的区域,都会激活/停用input,并触发相关函数接口;也可在代码中直接调用对应接口来激活输入框

ActivateInputField

用于激活 InputField 以开始处理 Events 的函数。会自动调用拉起虚拟键盘

DeactivateInputField

用于停用 InputField 以停止处理 Events 的函数,并且如果未取消,则发送 OnSubmit。

  • 激活输入框时,会自动调用SelectAll函数,选中输入框中的全部内容

  • 可以通过给inputField的caretPosition字段赋值,控制光标位置,来直接索引聚焦到内容的某个字符;光标位置是按照unity默认的字符计算的,中英文所占字符位数不同,有中文的时候需要特殊计算光标位置

  • 光标直接索引到头尾 也可以通过以下两个函数,会自动处理掉selectAll的选中效果

MoveTextEnd

将光标索引移动至文本末尾。

MoveTextStart

将光标索引移动至文本开头。

  • 在代码使用接口激活inputfiled之后,必须等待一帧,再控制光标位置(通过ForceLabelUpdate接口强制直接刷新),才能成功,因为光标会等待一帧再出现;

  • ​inputdield使用多行输入,文本内容超出框体事,可以通过光标上下移动看到超出框外的文本内容,是通过直接刷新子物体中的text的内容来实现的,而非滑动

  • inputField的原生Text组件的高度是固定的,当输入超过text高度或宽度的文字时,inputField是通过实时刷新text的内容的,来查看超出框体之外的内容并实现光标在文字间移动的效果

计算屏幕上组件的尺寸rect时,需要注意canvas可能会适配屏幕分辨率,需要根据canvasScaler中的不同设置,去重新计算rect的大小才是准确 的

猜你喜欢

转载自blog.csdn.net/Leo__Lk/article/details/125559047