我有一个InputField用作搜索栏。我无法使用OnValueChanged自动搜索,因为最初,如果我输入""之类的任何字符,则文本字段现在将为a,因为inputField.text仍然是""而不是a在添加下一个字符之前,不会进行搜索。

有什么方法可以在事件的第一击中获取当前文本?

public void SearchGame()
    {
        try
        {
            if (!string.IsNullOrEmpty(SearchText.text) && SearchText.text != "")
            {
                var listofvalues = list1.Where(x => x.name.ToLower().StartsWith(SearchText.text.ToLower(), StringComparison.CurrentCulture)).ToList();

                if (listofvalues.Count > 0)
                {
                    foreach (var value in listofvalues)
                    {
                        //loading
                    }
                }
                else
                {
                    //No search result
                }
            }
            else
            {
               //stuff
            }
        }
        catch (Exception exception)
        {
            LoggingManager.Error(exception);
        }
    }


此方法附加到输入字段的On Value Changed事件,而searchText是该输入字段的Text。

最佳答案

看起来您没有在此事件上使用动态参数分配。

public void SearchGame(string text)
{
    try
    {
        if (!string.IsNullOrEmpty(text) && text != "")
        {
            var listofvalues = list1.Where(x => x.name.ToLower().StartsWith(text.ToLower(), StringComparison.CurrentCulture)).ToList();

            if (listofvalues.Count > 0)
            {
                foreach (var value in listofvalues)
                {
                    //loading
                }
            }
            else
            {
                //No search result
            }
        }
        else
        {
           //stuff
        }
    }
    catch (Exception exception)
    {
        LoggingManager.Error(exception);
    }
}


请注意,某些事件具有应包含在处理程序签名中的参数。例如OnValueChanged期望UnityAction<string>作为其处理程序,或者仅是具有该签名SearchGame(string)的方法。

因此,传递SearchGame()将忽略<string>参数。

关于c# - Unity InputField OnValueChanged事件为InputField.text少显示一个字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51382621/

10-13 02:43