I need to detect which view is in front (currently visible). How can I do this?
Here is a what I would like to do:
if ( ! <<methodToTellIfViewAIsInFront>>) {
[viewA prepareToDisplay];
[window bringSubviewToFront: viewA];
}
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
UIView’s don’t necessarily have a concept of being in front. UIWindows can be key or not, but it’s not quite the same thing.
You can bring a view to the front, but that doesn’t mean it is or is not visible. Remember, views can be any size.
A UIView buried deep in the hierarchy could be partially visible, it could be obscured, or it could be behind some translucent view. Likewise a view at the front may not be visible at all if its opacity value or hidden flags are modified.
I think what you want to do is check the subviews NSArray of your superview or UIWindow and check that. I can’t remember which is the front, but it is either the first or last object.
Subviews are drawn with the painter’s method. The views are drawn in order from farthest to nearest and the last object drawn is “the front.”