TouchPhase.Began triggering twice

I have a bool function called by OnGUI, returning true if you are pressing a certain region on the screen and touch.phase == TouchPhase.Began. However, it returns true two times for each touch.

I guess this is caused by the OnGUI method being triggered more frequently than the Update function.

Is there a simple way to fix / work around the problem?

OnGUI gets called numerous times, once for each event this frame. You need to check the event it is currently processing.

But consider doing Input processing in Update, not OnGUI. Just set some variables and render in OnGUI based on them.