#if (UNITY_ANDROID) #if HZMFUI using CommonUI.UI; using System; using System.Collections.Generic; using System.Text; using UnityEngine; namespace CommonUI_Unity3D_Android { public class UnityPlatformAndroidTextInput :MonoBehaviour { private UITextInput mInput = null; private int mMaxLength = 100; private string mText = ""; protected TouchScreenKeyboard mKeyboard; public void SetInput(UITextInput input) { //if input = null then seems to close KeyBoard. if(input == null && mInput != null && !mInput.IsDispose) { mInput.FadeTextField(false); mInput.Text = mText; mInput.SetInputFinish(mText); if(mKeyboard != null) { mKeyboard.active = false; } } mInput = input; //open KeyBoard. if(mInput != null && !mInput.IsDispose) { mInput.FadeTextField(true); mMaxLength = input.MaxLength; mText = mInput.Text; mKeyboard = TouchScreenKeyboard.Open(mText, ConvertKeyBoardType(mInput.InputType), false); } } void Update() { if(mKeyboard != null) { //update Content. string text = mKeyboard.text; if(text == null) { text = ""; } if(mText != text && mInput != null && !mInput.IsDispose) { mText = ""; for(int i = 0; i < text.Length; ++i) { char ch = text[i]; ch = mInput.DoValidator(mText, ch); if(ch != 0) mText += ch; } if(mMaxLength > 0 && mText.Length > mMaxLength) mText = mText.Substring(0, mMaxLength); if(mText != text) mKeyboard.text = mText; UpdateInputText(); } //check input status. if(mKeyboard.done || !mKeyboard.active) { mKeyboard = null; this.SetInput(null); } } } private TouchScreenKeyboardType ConvertKeyBoardType(UITextInput.KeyBoardType type) { TouchScreenKeyboardType rlt = TouchScreenKeyboardType.Default; switch(type) { case UITextInput.KeyBoardType.NumberPad: rlt = TouchScreenKeyboardType.NumberPad; break; case UITextInput.KeyBoardType.PhonePad: rlt = TouchScreenKeyboardType.PhonePad; break; case UITextInput.KeyBoardType.EmailAddress: rlt = TouchScreenKeyboardType.EmailAddress; break; default: break; } return rlt; } private void UpdateInputText() { mInput.Text = mText; } } } #endif #endif