In my iOS application, I have a timer firing up, and when it fires, I need to be able to detect whether there's an Alert (UIAlertView) or an Action Sheet (UIActionSheet) open.
One way would be to modify the code presenting the alerts/actionsheets - but unfortunately this is not an option in my case.
So, the question is - is there a way of knowing/detecting whether an alert or action sheet have been opened?
Is there any notifications sent upon opening, or any traversal of the view hierarchy to detect it?
Thanks
They do send an alert when they open, but only to their delegate
-- Check this question for a nice approach to that problem. Techzen recommends setting a boolean flag to YES
when you open up the alert, and setting it back to NO
when you dismiss the alert.
EDIT:
Since you don't have access at all to the code, why not try this clunky piece of code:
-(BOOL) doesAlertViewExist {
for (UIWindow* window in [UIApplication sharedApplication].windows) {
NSArray* subviews = window.subviews;
if ([subviews count] > 0) {
BOOL alert = [[subviews objectAtIndex:0] isKindOfClass:[UIAlertView class]];
BOOL action = [[subviews objectAtIndex:0] isKindOfClass:[UIActionSheet class]];
if (alert || action)
return YES;
}
}
return NO;
}
- (BOOL) doesAlertViewExist {
for (UIWindow* window in [UIApplication sharedApplication].windows) {
for (UIView* view in window.subviews) {
BOOL alert = [view isKindOfClass:[UIAlertView class]];
BOOL action = [view isKindOfClass:[UIActionSheet class]];
if (alert || action)
return YES;
}
}
return NO;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With