如何监听InputField的选中与离开

InputField算是Unity中比较重要的交互部分,但是InputField提供的监听只有OnValueChanged和OnEndEdit两种。

OnValueChanged主要用来监听输入的字符数量变化,并返回一个当前的string

OnEndEdit会返回一个结束的事件,并返回输入完毕的string

那EndEdit可以当做离开InputField的事件的话,如何知道InputField获得了焦点呢?

 

在这里使用了EventTrigger脚本

在InputField组件上添加EventTrigger脚本,,点击AddNewEventType,选择Click或Select事件,区别在于,Click是监听InputField被点击的事件;而Select是监听InputField被选中的事件。

随后即可像外部绑定button组件一样绑定InputField的EventTrigger事件了。

=====2.0===== 

其实后来发现可以用代码实现,这是在下写的一个UIUtility.cs脚本的一部分代码,可以实现监听离去与进入

EventTypeEnum是一个枚举,注册了多种EventType,现在要用到的只是其中的OnSelect和Deselect

public static void BindUIEvent(EventTypeEnum type, UnityEngine.Events.UnityAction<BaseEventData> uiEvent, Transform trans)
    {
        if (!trans.GetComponent<EventTrigger>())
        {
            Debug.LogWarningFormat("组件未添加EventTrigger,UIUtility已为其添加,请注意");
            trans.gameObject.AddComponent<EventTrigger>();
        }
        UnityAction<BaseEventData> selectEvent = new UnityAction<BaseEventData>(uiEvent);
        EventTrigger.Entry onSelect = new EventTrigger.Entry();
        switch (type)
        {
            case EventTypeEnum.OnSelect:
                onSelect.eventID = EventTriggerType.Select;
                break;
            case EventTypeEnum.Deselect:
                onSelect.eventID = EventTriggerType.Deselect;
                break;
        }

        onSelect.callback.AddListener(selectEvent);
        trans.GetComponent<EventTrigger>().triggers.Add(onSelect);
    }

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值