The iPhone OS is more of an event driven system. So you don't capture anything when the user presses the button. Instead you turn on location services before you present the button, and get callbacks when the OS is good and ready. Present the button after the 3rd location callback (the first two locations or so might be yesterdays), then save the location callback closest in time to when the user pressed the button.
The accuracy varies a lot (from a few meters to a few thousand), depending on sky coverage, overhead absorption, satellite orbits in view, how long you wait, radio interference, etc., but each callback estimates its accuracy.
ymmv