UGUI系列-InputField限制输入个数以及限制输入格式

4,968 阅读3分钟

推荐阅读

一、前言

UGUI InputField 组件是一个用来管理输入的组件 我们通常用来输入用户的账号,密码,或者聊天时输入文字,等等输入逻辑…

在使用中,我们常常要对输入的字符串进行限制,最常见的限制有个数和格式

二、限制输入个数

设置Input Field组件的 Character Limit 属性就可以限制输入个数:

如下图所示:

在这里插入图片描述

三、限制输入类型

这个我们就需要研究一下Input Field组件的 Content Type 属性了

在这里插入图片描述

这个属性的功能是定义输入内容接受/限制的字符类型

一共有以下几种类型:

类型功能
Standard标准,可以输入任意字符
Auto corrected自动更正,可以自动更正用户输入,并建议输入内容
Integer Number整数,只允许输入整数
Decimal Number小数,允许输入数字和小数点后一位
Alphanumeric字母数字,允许字母和数字。无法输入符号
Name名称(支持中文)自动将每个单词的首字母大写。
Email Address电子邮件地址,允许您输入最多包含一个@符号的字母数字字符串
Password密码:用 * 表示输入的字符,从而隐藏输入内容。允许输入任意字符
Pin密码:用 * 号表示输入的字符,从而隐藏输入内容。仅允许输入整数
Custom自定义:允许自定义行类型、输入类型、默认键盘类型、字符验证

这几个就没啥好说的,

在这里插入图片描述

主要讲一下自定义:

在这里插入图片描述

Line Type:行类型,允许输入单行或者多行,或者Enter 键来新建行,继续输入

在这里插入图片描述

Input Type:输入类型,有三个选项,任何字符、自动修正、密码类型

在这里插入图片描述

Keyboard Type:它可以在用户选中输入框时,调出不同类型的键盘

在这里插入图片描述

名称功能
Default目标平台的默认键盘
ASCLL Capable带标准ASCII键的键盘。
Numbers And Punctuation键盘与数字和标点符号键
URL键盘与URL输入键
Number Pad键盘与标准数字键
Phone Pad键盘与适合键入电话号码的布局
NamePhone Pad键盘与字母数字键
Email Address带有适合键入电子邮件地址的其他键的键盘
Nintendo Network Account带有网络账号键的键盘
Social键盘与常用于社交媒体上的符号键,如Twitter
Search键盘上带有“.” 空格键旁边的键,适合键入搜索词

Character Validatior:字符验证类型,有整数、小数、字母数字、名字、Email等

在这里插入图片描述

按需设置咯

如果上面还不满足你的设置,想要更加严格的限制,那么请往下看

四、代码限制输入字符

比如说用正则表达式来判断输入的字符串是否符合格式,符合格式就不管,不符合格式就把赋值输入的字符串减一位的字符串,也就相当于删除掉最后一位

关于正则表达式的应用可以看我另一篇文章:文章链接

4-1、限制输入的字符串0-9 a-f A-F

using System.Text.RegularExpressions;
using UnityEngine;
using UnityEngine.UI;

public class Input_Test : MonoBehaviour
{
    InputField m_InputField;

    private void Awake()
    {
        m_InputField = GetComponent<InputField>();
        m_InputField.onValueChanged.AddListener(OnInputFieldValueChang);
    }

    private void OnInputFieldValueChang(string inputInfo)
    {
        Regex reg = new Regex("^[A-Fa-f0-9]+$");
        if (reg.IsMatch(inputInfo))
        {
            m_InputField.text = inputInfo;
        }
        else
        {
            if (m_InputField.text == "")
            {
                m_InputField.text = "";
            }
            else
            {
                m_InputField.text = inputInfo.Substring(0, inputInfo.Length - 1);
            }
        }    
    }
}

在这里插入图片描述