GUIText Touch not working

I’ve some GUIText which im using as button. Touch not working for any of them.
I used an Empty GameObject as a Parent of All GuiText … I dont know if that’s why raycast not firing or what… My Hierarchy is like this

[+]GameStatistic(Empty Gameobject)

----[-] Back Button (GUIText)

----[-] Sumbit Button (GuiText)

And Im using OnTouchDown Script which attached with the camera.

RaycastHit hit = new RaycastHit();
        for (int i = 0; i < Input.touchCount; ++i)
        {
            if (Input.GetTouch(i).phase.Equals(TouchPhase.Began))
            {
                // Construct a ray from the current touch coordinates
                Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position);
                if (Physics.Raycast(ray, out hit))
                {
                    hit.transform.gameObject.SendMessage("OnMouseDown");
                }
            }
        }

Raycast is ignored by the GUIElements (GUIText or GUITexture) - you could use GUILayer.HitTest instead:

  ...
  // get the main camera's GUILayer:
  GUILayer gLayer = Camera.main.GetComponent< GUILayer>();
  for (int i = 0; i < Input.touchCount; ++i)
  {
    if (Input.GetTouch(i).phase.Equals(TouchPhase.Began))
    {
      // Get the GUIElement touched, if any:
      GUIElement button = gLayer.HitTest(Input.GetTouch(i).position);
      if (button) // if any GUIElement touched...
      {
        // call OnMouseDown in its scripts:
        button.SendMessage("OnMouseDown");
      }
    }
  }