MyInputField 支持文字插入

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.Serialization;
using System.Text;

public class MyInputField : InputField {
    private int use_caretPosition;
    private int use_selectionAnchorPosition;
    private int use_selectionFocusPosition;

    public int Use_selectionAnchorPosition
    {
        get
        {
            return use_selectionAnchorPosition;
        }
    }

    public int Use_selectionFocusPosition
    {
        get
        {
            return use_selectionFocusPosition;
        }

    }

    public int Use_caretPosition
    {
        get
        {
            return use_caretPosition;
        }
    }
    public int SetText(int start , int end, string m_text)
    {
        int value = 0;
        start = Mathf.Clamp(start , 0 , text.Length);
        end = Mathf.Clamp(end, start, text.Length);
        StringBuilder str = new StringBuilder();
        string startStr = text.Substring(0, start);
        string endStr = text.Substring(end, text.Length - end);
        str.Append(startStr);
        str.Append(m_text);
        value = str.Length;
        str.Append(endStr);
        this.text = str.ToString();
        return value;
    }
    public void MoveTextIndex(bool shift = false, int Index = 0)
    {
        int position = Index;

        if (shift)
        {
            caretSelectPositionInternal = position;
        }
        else
        {
            caretPositionInternal = position;
            caretSelectPositionInternal = caretPositionInternal;
        }
        UpdateLabel();
    }

    protected void SaveMyUsePosition()
    {
        use_caretPosition = caretPosition;
        use_selectionAnchorPosition = selectionAnchorPosition; //起点
        use_selectionFocusPosition = selectionFocusPosition;    //终点
    }

    protected override void OnDisable()
    {
        SaveMyUsePosition();
        base.OnDisable();
    }
    public override void OnUpdateSelected(BaseEventData eventData)
    {
        SaveMyUsePosition();
        base.OnUpdateSelected(eventData);
    }
    public override void OnDeselect(BaseEventData eventData)
    {
        SaveMyUsePosition();
        base.OnDeselect(eventData);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40833062/article/details/129736607