using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; #if WEBGL_WX && !UNITY_EDITOR using WeChatWASM; #endif namespace HCMiniSdk.Scripts.Other { public class HCInput : MonoBehaviour, IPointerClickHandler, IPointerExitHandler { private InputField input; private bool isShowKeyboard = false; private void Start() { input = gameObject.GetComponent(); } public void OnPointerClick(PointerEventData eventData) { #if WEBGL_WX && !UNITY_EDITOR ShowKeyboard(); #endif } public void OnPointerExit(PointerEventData eventData) { #if WEBGL_WX && !UNITY_EDITOR if (!input.isFocused) { HideKeyboard(); } #endif } #if WEBGL_WX && !UNITY_EDITOR public void OnInput(OnKeyboardInputListenerResult v) { if (input.isFocused) { input.text = v.value; } } public void OnConfirm(OnKeyboardInputListenerResult v) { HideKeyboard(); } public void OnComplete(OnKeyboardInputListenerResult v) { input.text = v.value; HideKeyboard(); } private void ShowKeyboard() { if (isShowKeyboard) return; WX.ShowKeyboard(new ShowKeyboardOption() { defaultValue = $"{input.text}", maxLength = 1024, confirmType = "go" }); //绑定回调 WX.OnKeyboardConfirm(OnConfirm); WX.OnKeyboardComplete(OnComplete); WX.OnKeyboardInput(OnInput); isShowKeyboard = true; } private void HideKeyboard() { if (!isShowKeyboard) return; WX.HideKeyboard(new HideKeyboardOption()); //删除掉相关事件监听 WX.OffKeyboardInput(OnInput); WX.OffKeyboardConfirm(OnConfirm); WX.OffKeyboardComplete(OnComplete); isShowKeyboard = false; } #endif } }