It's more than just a substitution of tapping an icon vs dialing a phone number.
The Uber business model of non-medallion cars and geographic matching algorithm builds up a "distributed mesh" of drivers to serve passengers -- especially those who are not at typical taxi "hubs" like airports, convention centers, downtown hotels, etc.
Before Uber, getting from one suburb to another suburb using a taxi was unreliable. A traditional taxi dispatcher can broadcast a ride request from a potential passenger in the suburbs but drivers can ignore it and wait for the more lucrative airport-to-downtown ride for $50. Why? Because the taxi meter only runs when that passenger is in the car so it punishes suburb-to-suburb trips and instead, incentives them to wait for the longer airport trips. So hub-to-suburb and suburb-back-to-hub is "dead time" the drivers are not paid for.
A traditional taxi company -- even with an app -- doesn't build that geographically distributed mesh to the same degree. The economic constraint was the taxi meter.
When I was stuck in some distant suburb and had to use taxi companies, the way I "hacked" them to reliably come was to tell dispatch to tell the taxi driver I will tip an extra $20 for the ride. Basically, a form of bribery so the taxi drivers wouldn't ignore the dispatch call.