Just make sure that the overlay and all its parent views do not have userInteractionEnabled set to NO, are not hidden, and do not have alpha less than 0.01. Then user touches will interact with the overlay, not with the views visible behind it. Also keep in mind that it will not block interaction in a region that is not covered by its supervisors: even if your view covers the entire screen, if its parent object is only 10x10, then it blocks interaction only inside this 10x10 region, to which it extends parent.
You may also need to make sure that resignFirstResponder is called for any existing first responder, or that the user can still interact with it using the keyboard.
Anomie
source share