如何找到活动的InputField,isFocused不起作用

问题描述 投票:0回答:1

我正在尝试找到活动的输入字段。

在代码中我创建了InputFields并将它们添加到列表中,在列表中它们被添加,但我无法在isFocused中获取它们。主要任务是比较用户输入的数据和InputField的Placeholder中的数据。

using System.Collections.Generic;
using TMPro;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;

public class LetterManager : Loader<LetterManager>
{
    public static LetterManager instance = null;

    [SerializeField] private string word;
    [SerializeField] private Sprite wordSprite;
    [SerializeField] private GameObject buttonLetter;
    [SerializeField] private GameObject letterUIPanel;
    [SerializeField] public string inputText;
    [SerializeField] private TextMeshProUGUI buttonText;
    [SerializeField] private TMP_InputField _inputField;

    private List<TMP_InputField> inputFieldsList = new List<TMP_InputField>(); 
    

    private void Start()
    {
        for (int i = 0; i < word.Length; i++)
        {
            GameObject newButtonLetter = Instantiate(buttonLetter, letterUIPanel.transform) as GameObject;
            newButtonLetter.name = $"Button{i}";
            buttonText = newButtonLetter.GetComponentInChildren<TextMeshProUGUI>();
            buttonText.text = word[i].ToString();
            _inputField = newButtonLetter.GetComponent<TMP_InputField>();
            inputFieldsList.Add(_inputField);
            Debug.Log(buttonText.text);
            
        }
        foreach (var input in inputFieldsList) //here check list InputField is OK
        {
            Debug.Log(input);
        }
    }

    public void LogInputText() //assigned to event manager in InputField, NOT work!
    {
        foreach (var input in inputFieldsList)
        {
            if(input.isFocused) Debug.Log(input.name);
        }
    }
}

c# unity-game-engine unity-ui
1个回答
0
投票

问题解决了,有必要明确指出我们在哪个实例上调用 Foreach。

foreach (var input in LetterManager.Instance.inputFieldsList)
© www.soinside.com 2019 - 2024. All rights reserved.