Smikey
Smikey

Reputation: 8236

Check if UIView is displaying a UIAlertView

Is it possible to determine if the current UIView has a UIAlertView on display (other than setting a variable every time a UIAlertView is created).

I'm thinking something along the lines of

    if ([self.view.subviews containsObject:UIAlertView]) { ... }

But that obviously doesn't work.

Upvotes: 4

Views: 10375

Answers (3)

Kyle C
Kyle C

Reputation: 4097

I think it will work:

-(BOOL) doesAlertViewExist 
{
    if ([[UIApplication sharedApplication].keyWindow isMemberOfClass:[UIWindow class]])
    {
        return NO;//AlertView does not exist on current window
    }
    return YES;//AlertView exist on current window
}

Upvotes: 10

Warif Akhand Rishi
Warif Akhand Rishi

Reputation: 24248

This will not work in iOS7 and above.

[alertView Show] adds subview on main window I guess.

for (UIWindow* window in [UIApplication sharedApplication].windows){
    for (UIView *subView in [window subviews]){
        if ([subView isKindOfClass:[UIAlertView class]]) {
            NSLog(@"has AlertView");
        }else {
            NSLog(@"No AlertView");
        }
    }
}

Upvotes: 16

Matt Hudson
Matt Hudson

Reputation: 7358

If you store the UIAlertView as a property on the view controller that is displaying it and then run your code:

if ([self.view.subviews containsObject:self.myalertview]) { ... }

That should work.

Upvotes: 1

Related Questions