Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Join us on Thursday, June 8, for a Q&A with Unity's Content Pipeline group here on the forum, and on the Unity Discord, and discuss topics around Content Build, Import Workflows, Asset Database, and Addressables!
    Dismiss Notice

Question How do i disable drag input for a TMP input field? (inside a scrollview)

Discussion in 'UGUI & TextMesh Pro' started by Divinitize1, Apr 1, 2023.

  1. Divinitize1

    Divinitize1

    Joined:
    May 27, 2019
    Posts:
    98
    As the title says, when i drag a scroll view and happen to start dragging on an inputfield it just selects the input field and ignores the drag.
    Even spent a good hour with chatGPT4 trying to figure this one out but to no success.

    Any help would be greatly appreciated.
     
  2. Divinitize1

    Divinitize1

    Joined:
    May 27, 2019
    Posts:
    98
    ok this script work for now, its a little hit or miss on mobile, but it works for now,
    just a pain it replaces the origin TMP input field as i have to reapply my references and add the placeholder/text/textarea back in


    Code (CSharp):
    1.  
    2. using UnityEngine;
    3. using UnityEngine.EventSystems;
    4. using TMPro;
    5.  
    6. public class DraggableInputField : TMP_InputField, IBeginDragHandler, IDragHandler, IEndDragHandler
    7. {
    8.     private bool isDragging = false;
    9.  
    10.     public void OnBeginDrag(PointerEventData eventData)
    11.     {
    12.         isDragging = true;
    13.  
    14.         // Disable the input field to prevent it from being selected.
    15.         interactable = false;
    16.  
    17.         // Trigger the BeginDrag event on the scroll view.
    18.         ExecuteEvents.ExecuteHierarchy(transform.parent.gameObject, eventData, ExecuteEvents.beginDragHandler);
    19.     }
    20.  
    21.     public void OnDrag(PointerEventData eventData)
    22.     {
    23.         if (isDragging)
    24.         {
    25.             // Trigger the Drag event on the scroll view.
    26.             ExecuteEvents.ExecuteHierarchy(transform.parent.gameObject, eventData, ExecuteEvents.dragHandler);
    27.         }
    28.     }
    29.  
    30.     public void OnEndDrag(PointerEventData eventData)
    31.     {
    32.         isDragging = false;
    33.  
    34.         // Enable the input field.
    35.         interactable = true;
    36.  
    37.         // Trigger the EndDrag event on the scroll view.
    38.         ExecuteEvents.ExecuteHierarchy(transform.parent.gameObject, eventData, ExecuteEvents.endDragHandler);
    39.     }
    40. }
    41.  
    42.