gpt4 book ai didi

c# - 失去焦点时如何保持 InputField 键盘打开?

转载 作者:太空宇宙 更新时间:2023-11-03 14:43:23 25 4
gpt4 key购买 nike

我正在制作一个打字游戏,用户可以在其中输入落在屏幕上的单词,并且我在顶部有一些按钮,当用户按下它们时,它们会充当通电(核弹、卡住等...)。

现在,当用户单击屏幕顶部的电源按钮之一时,键盘会在 ButtonClicked 重新打开之前暂时关闭,这看起来很麻烦。 我如何做到这一点,以便当用户点击顶部的按钮之一时,键盘始终保持打开状态?

目前,我在将重新打开键盘的按钮上添加了一个监听器。

myButton.onClick.AddListener(ButtonClicked);

void ButtonClicked()
{
//DoStuff();
inputField.ActivateInputField();
}

这是现在的样子。我必须单击一次才能摆脱键盘,然后再单击一次按钮。

https://imgur.com/a/WTLLYEX

我尝试用自定义类覆盖一些 InputField 函数,但无济于事。

public class CustomInputField: InputField
{
public override void OnDeselect(BaseEventData eventData)
{
Debug.Log ("Overrides InputField.Deselect");
}

public override void DeactivateInputField()
{
Debug.Log ("Overrides InputField.DeactivateInputField");
}

}

第一个方法没有完成我想要的,第二个方法 DeactivateInputField() 给了我

error CS0506: CustomInputField.DeactivateInputField': cannot override inherited memberInputField.DeactivateInputField' because it is not marked virtual, abstract or override.

如有任何帮助,我们将不胜感激,谢谢!

最佳答案

您可以使用 TouchScreenKeyboard.open 函数让键盘随时间打开(这里是 Unity 手册的链接:https://docs.unity3d.com/ScriptReference/TouchScreenKeyboard.Open.html)。然后我也会尝试不为此使用更新,应该在您的脚本中使用另一种方法。

你的错误 Otherwise 可能是因为你试图覆盖一个函数,就像错误说的不是 Virtual Abstract 或 Override,所以你不允许这样做。为此,它是一个 Unity 类,因此您也无法更改它。

您可以尝试的另一件事是 LateUpdate,它并不完美,但它可能对您的案例有所帮助,例如:

LateUpdate()
{
if(!TouchScreenKeyboard.visible)
TouchScreenKeyboard.Open()/inputField.ActivateInputField();
};

关于c# - 失去焦点时如何保持 InputField 键盘打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55644419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com