Когда появится предупреждение, оно будет перемещено в окно _UIAlertOverlayWindow. Поэтому довольно хрупкий метод состоит в том, чтобы перебрать все окна и проверить, есть ли какие-либо подпредставления UIAlertView.
-(BOOL)checkAlertViewVisibleStatus
{
for (UIWindow* window in [UIApplication sharedApplication].windows)
{
NSArray* subviews = window.subviews;
if ([subviews count] > 0)
if ([[subviews objectAtIndex:0] isKindOfClass:[UIAlertView class]])
return YES;
}
return NO;
}
Это недокументировано, так как это зависит от внутренней иерархии представлений, хотя Apple не может пожаловаться на это. Более надежный, но еще более недокументированный метод - проверить, является ли `
[_ UIAlertManager visibleAlert]
`равно нулю.
Эти методы не могут проверить, отображается ли UIAlertView из SpringBoard.