Несколько AlertViews - Удалить представление оповещения, которое находится за другим предупреждением - PullRequest
0 голосов
/ 04 марта 2011

Я думаю, что этот сценарий должен быть странным, но я застрял с этим.

У меня есть представление, скажем View1, которое будет показывать одно или несколько предупреждений. Предупреждения накладываются друг на друга, еслиони нетронуты.Проблема приходит сюда.Если я нажму на самое верхнее оповещение, это приведет меня к совершенно новому представлению, скажем, View2.И это так.Теперь я получаю оставшиеся оповещения, все еще показанные в View2.Я не хочу, чтобы это произошло.Как я могу автоматически отклонить ожидающие оповещения, созданные в View1, которые в данный момент отображаются в View2?

Любая помощь или любая идея действительно приветствуются ..

Спасибо

Ответы [ 4 ]

4 голосов
/ 04 марта 2011

Попробуйте,

    UIAlertView *autoAlertView = [[UIAlertView alloc] initWithTitle:@"Auto-dismissed Alert" message:@"This alert will be dismissed in 5 seconds." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
    [self performSelector:@selector(dismissAlert:) withObject:autoAlertView afterDelay:5];
    [autoAlertView show];
    [autoAlertView release];

-(void)dismissAlert:(UIAlertView *)alert {
    [alert dismissWithClickedButtonIndex:0 animated:YES];
}
3 голосов
/ 04 марта 2011

Не совсем тот ответ на ваш вопрос, который вы хотели, но ...

Почему у вас так много предупреждений?Похоже, вы их слишком злоупотребляете.Apple в своих Рекомендациях по интерфейсу пользователя совершенно ясно описывает, как следует использовать UIAlerts:

Избегайте создания ненужных оповещений.

Эти оповещения обычно не нужны, если они:

  • Просто увеличьте видимость некоторой информации, особенно информации, связанной со стандартным функционированием вашего приложения.

Вместо этого вам следует разработать привлекательный способ отображения информации, которая гармонирует сстиль вашего приложения.

  • Обновляйте пользователей по задачам, которые выполняются нормально.

Вместо этого рассмотрите возможность использования представления прогресса или индикатора активности для предоставления пользователям обратной связи, связанной с прогрессом.(эти методы обратной связи описаны в «Просмотр прогресса» и «Индикатор активности»).

  • Запрос подтверждения действий, инициированных пользователем.

Чтобы получить подтверждение длядействие, инициированное пользователем, даже потенциально опасное действие, такое как удаление контакта, вы должныиспользуйте лист действий.

  • Информируйте пользователей об ошибках или проблемах, с которыми они ничего не могут сделать.

Хотя может потребоваться использовать оповещение, чтобы сообщить пользователям окритическую проблему, которую они не могут решить, лучше интегрировать такую ​​информацию в пользовательский интерфейс, если это возможно.Например, вместо того, чтобы сообщать пользователям каждый раз, когда не удается установить соединение с сервером, отобразите время последнего успешного соединения.

Если вы злоупотребляете оповещениями: не делайте.Тогда ваш первоначальный вопрос может стать спорным.

2 голосов
/ 04 марта 2011

Вы можете отклонить другие UIAlertViews программно, используя:

- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated

Для этого вам нужно будет сохранить ссылку на них при создании.

0 голосов
/ 14 марта 2011

Спасибо, ребята! Я написал свой собственный заменитель UIAlertView. Я ставлю halftransparent UIView с frame (0, 0, 320, 480), чтобы избежать взаимодействия с пользователем, в то время как мое настраиваемое предупреждение все еще говорит «Пожалуйста, подождите», а поверх этого фонового представления я помещаю это настраиваемое предупреждение, которое является просто базовым UIView с UIActivityIndicatorView на нем

P.S. Не суди меня за мой английский, я русский

...