In a GUI, if the user taps a button a tenth of a second after it appeared, the user *meant* to tap that button.

If the button appeared as a direct result of the user's action, that's probably a decent assumption.  But it if appeared due to some asynchronous event that the user didn't initiate, chances are the user intended to tap whatever was on the screen previously.

If you change what's on the screen, don't activate the controls until the user has had a chance to see the new screen.