You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中Android移动端空InputField删除键检测与停用问题

解决Android端空InputField按删除键不触发事件的方案

方案1:通过EventTrigger监听编辑命令

  1. 给目标InputField组件添加EventTrigger组件
  2. 点击EventTrigger的Add New Event Type,选择Edit Command
  3. 绑定如下处理逻辑的代码:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class EmptyInputDeleteHandler : MonoBehaviour
{
    public InputField targetInput;

    public void OnEditCommand(BaseEventData eventData)
    {
        var editEvent = eventData as EditCommandEventData;
        if (editEvent.command == EditCommand.DeleteBackward && string.IsNullOrEmpty(targetInput.text))
        {
            // 停用InputField
            targetInput.DeactivateInputField();
        }
    }
}
  1. 将脚本挂载到任意GameObject上,把目标InputField拖入targetInput字段,再把脚本的OnEditCommand方法绑定到EventTrigger的Edit Command事件中。

方案2:自定义InputField子类全局处理

继承原生InputField重写事件逻辑,所有使用该自定义组件的输入框都能自动生效:

using UnityEngine;
using UnityEngine.UI;

public class CustomInputField : InputField
{
    protected override void OnProcessEditCommand(EventSystems.EditCommand command)
    {
        base.OnProcessEditCommand(command);
        // 捕获删除后退命令,且当前输入框为空时停用
        if (command.name == "DeleteBackward" && string.IsNullOrEmpty(text))
        {
            DeactivateInputField();
        }
    }
}

使用时,直接替换场景中原生的InputField组件为这个CustomInputField即可。

关键说明

移动端软键盘的删除键不会触发Unity的Input.GetKeyDown检测,只能通过编辑命令事件捕获;判断DeleteBackward命令即可对应删除键操作,确保空输入框触发时执行停用逻辑。

内容的提问来源于stack exchange,提问作者unitydevelopmentquestions

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 16:35:26