Unity 输入法回车确定搜索 InputField.onSubmitInputField.onEndEdit

    技术2022-07-14  63

    Unity InputField.onSubmit 替换 InputField.onEndEdit 输入法回车搜索

    不知道你是否在使用InputField.onEndEdit时发现一个问题,就是你输入法点击提交会执行该方法,输入时点击其他任何地方也会执行该方法,这是我们不需要的。
    我们想要的是只有我们在输入完成后点击提交的时候再执行,于是我们想到了InputField.onSubmit方法,于是问题又来了,这个方法怎么用,你会发现用不了。
    后来,你知道怎么用了,如果要用还是可以的,新建脚本继承InputField方法,重写onSubmit方法,你会发现问题又来了,当输入完成后点击确定,只是隐藏了输入框,并没有执行onSubmit,再次点击确定才会执行该方法,打包手机后相当于无效。

    下面讲述解决办法

    1.需要对InputField组件进行扩展,重新定义onSubmit,创建脚本InputFieldSubmit using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; [Serializable] public class StringUnityEvent : UnityEvent<string> { } [RequireComponent(typeof(InputField))] public class InputFieldSubmit : MonoBehaviour { public StringUnityEvent onSubmit; private InputField inputField; void Awake() { inputField = GetComponent<InputField>(); inputField.lineType = InputField.LineType.MultiLineNewline; } void OnEnable() { inputField.onValidateInput += CheckForEnter; } void OnDisable() { inputField.onValidateInput -= CheckForEnter; } private char CheckForEnter(string text, int charIndex, char addedChar) { if (addedChar == '\n' && onSubmit != null) { onSubmit.Invoke(text); return '\0'; } else return addedChar; } } 2.InputFieldSubmit这个脚本要挂载在 InputField组件上,如图:3.逻辑调用 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class mytext : MonoBehaviour { public InputFieldSubmit InputFieldSubmit; void Start() { InputFieldSubmit.onSubmit.AddListener(bb); } //提交后业务逻辑 private void bb(string arg0) { throw new NotImplementedException(); } }
    Processed: 0.014, SQL: 9