void ActivateInputFieldInternal()
        {
            if (EventSystem.current == null)
            {
                return;
            }

            if (EventSystem.current.currentSelectedGameObject != gameObject)
            {
                EventSystem.current.SetSelectedGameObject(gameObject);
            }

            if (TouchScreenKeyboard.isSupported)
            {
                m_Keyboard = TouchScreenKeyboard.Open(m_Text, m_KeyboardType, autocorrection: false, multiline: false);
            }
            else
            {
                m_FakeKeyboard = FakeTouchScreenKeyboard.Create(m_Text);
            }

            m_AllowInput   = true;
            m_OriginalText = m_Text;
            m_WasCanceled  = false;
        }
        public void DeactivateInputField()
        {
            // Not activated do nothing.
            if (!m_AllowInput)
            {
                return;
            }

            m_AllowInput = false;


            if (m_TextComponent != null && IsInteractable())
            {
                if (m_WasCanceled)
                {
                    text = m_OriginalText;
                }
                else
                {
                    string keyboardText = string.Empty;
                    if (m_Keyboard != null)
                    {
                        keyboardText = m_Keyboard.text;
                    }
                    else
                    {
                        keyboardText = m_FakeKeyboard.text;
                    }

                    keyboardText = ClampText(keyboardText);
                    keyboardText = CheckRichStyleTags(keyboardText);

                    if (excludeEmojiCharacters)
                    {
                        var sb = new System.Text.StringBuilder();
                        EmojiText.UpdateEmojiReplacements(
                            keyboardText, m_Config,
                            (emojiChar, emojiIndex) =>
                        {
                            if (emojiIndex != -1)
                            {
                                sb.Append(m_EmojiReplaceChar);
                            }
                            else
                            {
                                sb.Append(emojiChar);
                            }
                        });
                        text = sb.ToString();
                    }
                    else
                    {
                        text = keyboardText;
                    }
                }

                if (m_Keyboard != null)
                {
                    m_Keyboard.active = false;
                    m_Keyboard        = null;
                }
                else
                {
                    Debug.Assert(m_FakeKeyboard != null);
                    m_FakeKeyboard.Destroy();
                    m_FakeKeyboard = null;
                }

                SendOnSubmit();

                Input.imeCompositionMode = IMECompositionMode.Auto;
            }

            if (m_Placeholder != null)
            {
                m_Placeholder.enabled = string.IsNullOrEmpty(m_Text);
            }
        }