我正在做一个打字游戏,用户输入落在屏幕上的单词,并且我在顶部有一个按钮,当用户按下它们时,它们会用作加电功能(核弹,冻结等)。 / p>
现在,当用户单击屏幕顶部的加电按钮之一时,在ButtonClicked
重新打开之前,键盘将暂时关闭。 如何做到这一点,以便当用户单击顶部的按钮之一时,键盘始终保持打开状态?
当前,我在按钮上添加了一个监听器,它将重新打开键盘。
myButton.onClick.AddListener(ButtonClicked);
void ButtonClicked()
{
//DoStuff();
inputField.ActivateInputField();
}
这是现在的样子。我必须单击一次以摆脱键盘,然后再次单击按钮。
我尝试使用自定义类重写某些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()
给了我
错误CS0506:
CustomInputField.DeactivateInputField': cannot override inherited member
InputField.DeactivateInputField',因为它没有标记为虚拟,抽象或覆盖。
任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
您可以使用TouchScreenKeyboard.open
功能使键盘保持打开状态(此处是Unity手册的链接:https://docs.unity3d.com/ScriptReference/TouchScreenKeyboard.Open.html)。然后,我也会尝试不为此使用Update,在脚本中应该有另一种方式。
您的错误否则可能是由于您尝试覆盖一个函数而导致的错误,该函数说的错误不是Virtual Abstract或Override,因此不允许您这样做。为此,这是一个Unity类,因此您也将无法对此进行更改。
您可以尝试的另一种方法是LateUpdate,虽然它并不完美,但可以在以下示例中帮助您解决问题:
LateUpdate()
{
if(!TouchScreenKeyboard.visible)
TouchScreenKeyboard.Open()/inputField.ActivateInputField();
};
答案 1 :(得分:0)
输入字段将打开系统键盘,并且您对其的控制受到限制。如果您是我,我会在我的应用程序中创建UI键盘,该键盘可以通过任何方式进行自定义,并且可以保证在不同设备/系统上的结果相同。