Этот вопрос касается только UIAlertView, созданного вашим собственным приложением, или также других предупреждений?
А именно, вы хотите также рассмотреть (и найти способ скрыть) представления предупреждений, отображаемые посредством Push-уведомлений из других приложений,или смс оповещения и т.д?Если это так, то это, вероятно, будет сложно!
Если вы хотите рассматривать только UIAlertViews ваших собственных приложений, не нужно ли снова показывать представление оповещений после завершения синхронизации ваших данных?Потому что, если вы просто найдете способ отклонить представление оповещений, но никогда не будете его показывать снова, пользователь, вероятно, пропустит некоторую информацию здесь.Отклонение представления оповещения, вероятно, вызовет побочные эффекты, поскольку представление оповещения затем можно будет считать проверенным, и тогда код, который вы написали для обработки события buttonClicked, будет, вероятно, запущен, тогда как в вашем случае это, вероятно, не имеет смысла.
Но на самом деле скрывать представление предупреждений во время синхронизации данных мне кажется плохой идеей (только мое мнение): потому что если вы скрываете представление предупреждений, у пользователя не будет другого выбора, кроме как ждать, пока данные синхронизируются,о чем-то еще делать.Принимая во внимание, что если вы сделаете видимость оповещения видимой, это даст ему возможность, по крайней мере, получить информацию о sthg и уделить время чтению оповещения во время синхронизации данных.
[РЕДАКТИРОВАТЬ] Вот что я пытался.Это работает, но свечение, которое находится ниже UIAlertViews, когда на экране все еще видно даже после скрытия просмотров предупреждений.
Обратите внимание, что даже если есть способ скрыть это свечение, я не уверен, что делать это будет принято, когдаотправка приложения в AppStore.
LCAlertView.h
@interface LCAlertView : UIAlertView
+(void)setAlertViewsVisible:(BOOL)isVisible;
@end
LCAlertView.m
#import "LCAlertView.h"
static UIView* __alertsParentWindow;
static int __alertsCount = 0;
@implementation LCAlertView
+(void)setAlertViewsVisible:(BOOL)isVisible {
__alertsParentWindow.hidden = !isVisible;
}
-(void)didMoveToWindow {
if (self.window != nil) {
// showing
__alertsParentWindow = [self.window retain];
++__alertsCount;
} else {
// hiding
--__alertsCount;
[__alertsParentWindow release];
if (__alertsCount==0) __alertsParentWindow = nil;
}
}