ScrollRectの子供に配置されたオブジェクトが、IPointerDownHandlerを持つとドラッグ操作時に誤って呼び出される問題があります。
例えば、以下のようなコンポーネントがScrollRectの子供オブジェクトに存在する場合、
public class EventHandleTest : MonoBehaviour, IPointerUpHandler { public void OnPointerUp(PointerEventData eventData) { Debug.Log("OnPointerUp"); } }
クリックしてドラッグを開始すると、OnPointerUpが誤って呼び出されてしまいます。
しかし、IDragHandlerを実装した場合、正しくクリックを離したタイミングでOnPointerUpが呼び出されるようになります。
public class EventHandleTest : MonoBehaviour, IPointerUpHandler, IDragHandler { public void OnPointerUp(PointerEventData eventData) { Debug.Log("OnPointerUp"); } public void OnDrag(PointerEventData eventData) { Debug.Log("OnDrag"); } }
このように、IDragHandlerを実装することで、正確なイベントの発生タイミングを制御できます。