使用InputField时隐藏虚拟键盘

时间:2018-02-04 10:10:21

标签: c# android unity3d

我知道如何使用InputMethodManager隐藏或显示虚拟键盘。

但我想使用物理键盘在EditText中输入文字,但我不想在Unity 3D Android中显示虚拟键盘。

  

我怎么能在Unity 3D中做到这一点?

2 个答案:

答案 0 :(得分:4)

Unity中没有EditText这样的东西。 InputField用于接收来自设备的输入。

您可以在Android上使用InputField停用虚拟关键字。不确定这是否适用于其他平台。

您的输入字段:

public InputField inputField;

禁用虚拟键盘:

inputField.keyboardType = (TouchScreenKeyboardType)(-1);

启用虚拟键盘:

inputField.keyboardType = TouchScreenKeyboardType.Default;

如果您遇到奇怪的问题,请考虑从InputField派生您的脚本,然后停用虚拟键盘,最后调用Start的基本InputField功能:

public class HideVirtualKeyboard : InputField
{
    protected override void Start()
    {
        keyboardType = (TouchScreenKeyboardType)(-1);
        base.Start();
    }
}

答案 1 :(得分:0)

老问题我知道,但您真正想要的是设置 inputField.touchScreenKeyboard.active = false; 您可能需要在 LateUpdate 中将其设为 false

[SerializeField] 
private bool keyboardEnabled = true;
// toggle this to toggle native keyboard activity
public bool KeyboardEnabled { get { return keyboardEnabled; } set { keyboardEnabled = value; } }

private void LateUpdate()
{
#if UNITY_ANDROID
    if (inputField.touchScreenKeyboard != null && !keyboardEnabled)
    {
        inputField.touchScreenKeyboard.active = false;
    }
#endif
}