The big question is whether there are spurious transitions from noise or EMI. Generally, the pull-up or pull-down is strong enough so that, except while switching, the raw signal will stay reliably high or reliably low. If this is true, then you can act as soon as you see the first change in the raw signal. Then you have a time constant before you will consider a change in the opposite direction to be valid. That way, no matter how quickly the user taps a button, you will a) act as soon as possible, and b) not miss a tap.