unity 使用UI上的数字按钮,给text添加数字,并且显示光标,删除光标前数字,

embedded/2024/11/28 5:54:09/

今天有个需求,输入身份证,但是不用键盘,要点击按钮输入数字,并且可以控制光标,
1、数字按钮:点击后text添加数字内容
2、删除按钮:删除光标前的一个字符
3、左箭头:移动光标向左移动
在这里插入图片描述

text内容显示光标并控制

  public void InitNumberButton(){//number是这些按钮的父物体Button[] buttons=  number.GetComponentsInChildren<Button>();StringBuilder builder=new StringBuilder();foreach (Button button in buttons){if(button.name=="Delect"){button.onClick.AddListener(() => {DeleteCharacterBeforeCursor();});}else if(button.name=="zuo"){button.onClick.AddListener(() => {MoveCursorLeft();});}else{button.onClick.AddListener(() => {//currentText = builder.Append(button.name).ToString();characterToInsert=button.name;// identityInput.text = builder.Append(button.name).ToString();InsertCharacter();});}}}private string currentText = "";  // 当前的文本内容private int cursorPosition = 0;  // 光标的位置(索引)private string characterToInsert = "A";// 更新显示文本(包括光标位置)void UpdateDisplayText(){// 在光标位置插入特殊符号来模拟光标string textWithCursor = currentText.Insert(cursorPosition, "|");card.text = textWithCursor;}// 插入字符并将光标移到字符后面void InsertCharacter(){// 在光标位置插入字符currentText = currentText.Insert(cursorPosition, characterToInsert);// 将光标移到插入字符后面cursorPosition++;// 更新显示UpdateDisplayText();}// 控制光标向左移动void MoveCursorLeft(){// 如果光标没有移到最左边,则移动光标if (cursorPosition > 0){cursorPosition--;}// 更新显示UpdateDisplayText();}// 删除光标前的一个字符void DeleteCharacterBeforeCursor(){// 如果光标不在文本开头,则删除光标前的字符if (cursorPosition > 0){// 删除光标前的字符currentText = currentText.Remove(cursorPosition - 1, 1);// 将光标位置移动到删除的位置cursorPosition--;// 更新显示UpdateDisplayText();}}

http://www.ppmy.cn/embedded/141112.html

相关文章

医学机器学习:数据预处理、超参数调优与模型比较的实用分析

摘要 本文介绍了医学中的机器学习&#xff0c;重点阐述了数据预处理、超参数调优和模型比较的技术。在数据预处理方面&#xff0c;包括数据收集与整理、处理缺失值、特征工程等内容&#xff0c;以确保数据质量和可用性。超参数调优对模型性能至关重要&#xff0c;介绍了多种调…

TCMC-PMSA; p-SCN-Bn-TCMC; TCMC-PSMA-617

p-SCN-Bn-TCMC拥有双功能配体的特性&#xff0c;既是螯合剂&#xff0c;也具备共价连接到生物靶向载体&#xff08;如抗体、肽和蛋白质&#xff09;的反应位点。该化合物的分子式为C24H37N9O4S4HCl&#xff0c;分子量达到693.5&#xff0c;纯度通常保持在95%以上。p-SCN-Bn-TCM…

缓存使用规范学习

1.规范 size控制: string类型&#xff0c;控制在2KB以内 hash、list、set、zset类型的元素个数&#xff0c;不要超过5000 pipeline命令: 检查多参数命令的参数个数或pipeline命令个数&#xff0c;若值太大&#xff0c;建议减小&#xff08;codis proxy返回结果集超64K&…

使用 Python 实现目标检测

目录 简介环境准备数据集模型选择预处理模型加载与推理结果可视化优化与调参部署与应用参考资料 简介 目标检测是计算机视觉中的一个重要任务&#xff0c;旨在识别图像或视频中的特定对象并标注它们的位置。近年来&#xff0c;深度学习技术的发展使得目标检测的准确性和效率…

websocket是什么?

一、定义 Websocket是一种在单个TCP连接上进行全双工通信的协议&#xff0c;它允许服务器主动向客户端推送数据&#xff0c;而不需要客户端不断的轮询服务器来获取数据 与http协议不同&#xff0c;http是一种无状态的&#xff0c;请求&#xff0c;响应模式的协议(单向通信)&a…

重读《人月神话》(15)-祸起萧墙(Hatching a Catastrophe

增加更多的人手到一个已经延期的项目中往往不会加快项目的进度&#xff0c;反而可能使情况变得更糟。 项目进度的细微延迟往往难以察觉&#xff0c;但它们却能悄无声息地累积起来&#xff0c;最终对整个项目的完成时间造成重大影响。昨天&#xff0c;一位关键成员因突发疾病未…

mysql函数、查询、排序场景使用

1. 查询第二高薪资&#xff1a; 知识点&#xff1a; **IFNULL(XX,null)**函数&#xff1a;如不不存在则展示null&#xff1b; order by XX DESC &#xff1a;降序&#xff1b; distinct &#xff1a;去重&#xff1b; limit XX offset YY&#xff1a; 每页展示XX条&#xff0c…

【RISC-V CPU debug 专栏 3 -- Debugging RISC-V Cores】

文章目录 RISC-V 调试规范开源与多样性挑战调试规范的重要性外部调试支持的主要组件调试功能Lauterbach 的贡献RISC-V 调试规范 调试 RISC-V 内核涉及许多独特的挑战,这是由 RISC-V 的开源特性和多样化的生态系统所决定的。为了避免专有调试接口的泛滥,RISC-V 基金会内的工作…