【问题标题】:Pushing back button/escape reverts text in Input Field按下按钮/转义会还原输入字段中的文本
【发布时间】:2016-10-16 04:34:43
【问题描述】:

我在 Unity 3D 游戏中使用输入字段。当我在 Windows 10 Mobile 上输入文本并按下后退按钮关闭键盘时,Unity 认为我想清除输入字段。 documentation 中甚至没有提到这种行为,我还没有找到覆盖它的方法。我想这样做,以便用户可以使用后退按钮关闭键盘而不恢复输入字段。有什么建议么?这只是 Unity 的一个错误吗?

【问题讨论】:

  • 您可以检测触摸是否在 inputField 之外,然后关闭键盘

标签: unity3d


【解决方案1】:

InputField的源码可以看这里:https://bitbucket.org/Unity-Technologies/ui/src/0155c39e05ca5d7dcc97d9974256ef83bc122586/UnityEngine.UI/UI/Core/InputField.cs?at=5.2&fileviewer=file-view-default

显然,在逃跑时清理场地是有意为之的。查看第 980 - 984 行:

case KeyCode.Escape:
{
     m_WasCanceled = true;
     return EditState.Finish;
}

您可以尝试创建自己的 InputField 子类并覆盖该函数

protected EditState KeyPressed(Event evt)

当然它不是很干净,因为除了第 980 - 984 行之外,您必须复制基本 InputField 在此函数中所做的所有内容。

【讨论】:

    【解决方案2】:

    KeyPressed 函数不能被覆盖。

    我刚刚在监听 inputField 值变化的函​​数中添加了这一点:

    if (Input.GetKeyDown (KeyCode.Escape)) {
        return;
    }
    

    它确实做了必要的事情:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-25
      • 2021-02-16
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      相关资源
      最近更新 更多