Raycasting UI components

I have a UI Button and I want to be able to tell when a mouse is over it . It has a specific tag on it in order to know when mouse is over it. When mousing over the UI Button it never prints out that tag, but tags get printed out for 3D objects though in the scene.

Basically I wan to raycast a UI Button.

Any ideas?

// Update is called once per frame
void Update () {
	
	Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//touch.position
	RaycastHit hit;
	if (Physics2d.Raycast(ray, out hit, 1000)) {
		print("tag "+hit.transform.tag);
	}

}

For the new UI system you can use OnPointerEnter interface.

Contains Example:
http://docs.unity3d.com/ScriptReference/UI.Selectable.OnPointerEnter.html

Available Interfaces:
http://docs.unity3d.com/ScriptReference/EventSystems.EventTrigger.html

You can use a GraphicRaycaster but the EventSystem already generates raycasts when implementing the interfaces for working with the pointer/touch etc.

You dont need to use Raycasting , theres already message function for this .

If you like a simple solution : Use a Event Trigger Component and add a Pointer Enter and Pointer Exit Event or any other New Event Type you like.