Tap vs Hold on Mobile

My current setup for detecting tap vs hold is:

if (Input.tapCount > 0 && !timerOn)
{
  //Stuff
  timerOn = true;
  StartCoroutine(TapTimer());
}

//--

IEnumerator TapTimer()
{
  yield return new WaitForSeconds(0.25f);
  timerOn = false;
}

Is there a better method for handling this?

You can use: (untested code, to give you an idea)

if(Input.TouchCount > 0)
{
   foreach(Touch t in Input.Touches)
   {
       if(t.phase == TouchPhase.Began)
       {
            Debug.Log("Tap worked");
       }
       else if(t.phase == TouchPhase.Stationary)
       {
            Debug.Log("Hold worked");
       }
   }
}