I tried this already but it does not allow me to switch it off
All previous iPhones can easily be switched off through following the same process you suggested
Is method the only way to switch caller id off?
If yes, what's wrong with all 4s iPhones that I have tried ?
Try this if your only wanting to block the occasional call.
Generally, mobile operators offer special code for you to block your call ID on call-by-call basis. In case you just want to hide your caller ID for an individual outbound call, you can dial the special code prior to the number you’re calling to enable the blocking. Say, you’re in U.S. and want to dial 212-323-3322. In North America, you can use the special code *67 to disable caller ID. So instead dialing the number directly, dial *67-212-323-3322. This will prevent your caller ID from appearing and your callee will just see a “Blocked” call. However, the special code varies by countries. According to Wikipedia, you can use the following special code to disable caller ID:
Argentina: *31*
Australia: 1831
Denmark and Switzerland: *31*
Germany: *31# (for some mobile providers may use #31#)
Verizon phones do not have the Caller ID option. However Verizon does offer a service to show your ID as blocked for all calls if you prefer. All of the docs in my husband's practice have their numbers blocked for all calls.