zoukankan      html  css  js  c++  java
  • 输入控件聚焦问题

    Q:输入控件在聚焦后,如果在其他地方改变其值(例如代码中),聚焦的控件内容不会更新,而且无法取消聚焦。

    A:取消聚焦的时机可以是按钮按下时、ESC键或者鼠标移出面板等。取消聚焦的代码:

    GUI.FocusControl(null);
    Repaint();//有时需要重绘
    

    多个控件,有复杂交互时,可以为控件指定一个聚焦名字:

    GUI.SetNextControlName("mytext:");//指定下一控件用于控制聚焦的名字
    text = EditorGUILayout.TextField("text", text);
    var rect = GUILayoutUtility.GetLastRect();
    var e = Event.current;
    if (e.type == EventType.MouseDown //当鼠标点击时
        && !rect.Contains(e.mousePosition) //鼠标不在控件范围内时
        && GUI.GetNameOfFocusedControl() == "mytext:") { //判断控件处于聚焦状态时
        GUI.FocusControl(null);
    }
    

    另外也可以使用GUIUtility.keboardControl来获取当前键盘聚焦的控件id

  • 相关阅读:
    APPlication,Session和Cookie的区别
    C# 中的Request对象的应用
    从字符串里提取一个列表(数组)
    UDP:用户数据报协议
    反射
    网络编程
    多线程
    final,finally和finalize的区别
    集合
    StringBuffer
  • 原文地址:https://www.cnblogs.com/stan-si/p/10573412.html
Copyright © 2011-2022 走看看