So I’m just finishing up at work but I was able to recreate the issue in a brand new Unity project. Here’s the breakdown:

This is the game scene. The gray cube is just a cube that I move with the A and D as you will see in a script below.
The Light Gray panel is the “inventory”. It is draggable - you will see this below as well.
The Blue panels are the “inventory slots”. They have the pointer enter/exit events as you will, again, see below.
Here’s the hierarchy:

As you can see, the inventory panel is the one that is highlighted. The next three panels are the inventory slots that are children of the inventory panel.
Here is the inspector pointing to the inventory panel:
The things to note here are the Draggable script and then Event Triggers that are set up here.
The inventory slots have these settings:
Note the Slot script and the event triggers here.
Finally, the cube looks like this:
Note the InputManager script and the fact that it’s a rigidbody (this is how I move the object in my game so I added the rigidbody here as well)
Okay. That’s the Unity setup. Here are the scripts:
InputManager.cs
using UnityEngine;
using System.Collections;
public class InputManager : MonoBehaviour {
// Update is called once per frame
void Update () {
if (Input.GetKey(KeyCode.D)) {
rigidbody.MovePosition(rigidbody.position + new Vector3(0.03f, 0, 0));
//transform.position += new Vector3(0.03f, 0, 0);
} else if (Input.GetKey(KeyCode.A)) {
rigidbody.MovePosition(rigidbody.position + new Vector3(-0.03f, 0, 0));
//transform.position += new Vector3(-0.03f, 0, 0);
}
}
}
Yes, I tested both the rigidbody movement and the transform position “teleportation”. They both seem to break the event triggers.
Draggable.cs
using UnityEngine;
using System.Collections;
public class Draggabble : MonoBehaviour {
private Vector3 startPos;
private Vector3 startMouse;
public void BeginDrag() {
startPos = GetComponent<RectTransform>().position;
startMouse = Input.mousePosition;
}
public void Drag() {
Vector3 newPos = GetComponent<RectTransform>().position;
newPos.x = startPos.x + Input.mousePosition.x - startMouse.x;
newPos.y = startPos.y + Input.mousePosition.y - startMouse.y;
GetComponent<RectTransform>().position = newPos;
}
}
Slot.cs
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Slot : MonoBehaviour {
public void MouseEnter() {
GetComponent<Image>().color = Color.red;
}
public void MouseLeave() {
GetComponent<Image>().color = Color.blue;
}
}
That’s it. That’s the whole project. Sorry for the long post, I just wanted to be as transparent as possible. The outcome is the same thing as my earlier gif - it works until I move the cube. As soon as I move it the events stop triggering. Dragging the inventory around causes the triggers to be fired again.
Very odd. Hopefully your solution applies to this as well!