Обнаружение и скрытие UIAlertView (или отображение вида поверх него) - PullRequest
1 голос
/ 23 сентября 2011

Всякий раз, когда мое приложение становится активным, я показываю экран (это UIImageView, который я добавляю в мое подпредставление) и UIActivityIndicator, пока я синхронизирую свои данные.

Однако, если бы существовал UIAlertView (и я полагаю, что UIActionSheet также будет), отображающий момент, когда пользователь нажал кнопку «Домой», когда он возвращается на экран, и UIActivityIndicator показывает, но над ними отображается предупреждение.

Я вижу два способа решения этой проблемы: заставить скрытый просмотр предупреждений или показать мой экран по-другому.

Есть мысли о том, как решить мою проблему?

1 Ответ

0 голосов
/ 23 сентября 2011

Этот вопрос касается только 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...