Почему не отображается UIAlertView? - PullRequest
4 голосов
/ 17 марта 2011

По какой-то причине экран темнеет и зависает, предупреждение не отображается ... Может кто-нибудь помочь?

Заранее спасибо!

} else {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hello!" 
                                                message:@"Hello!" delegate:self 
                                      cancelButtonTitle:@"Done" 
                                      otherButtonTitles:nil];
    [alert show];
    [alert release];
}

Ответы [ 4 ]

15 голосов
/ 17 марта 2011

Вы, вероятно, звоните show из фонового потока, вызывайте его в основном потоке следующим образом:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hello!" 
                                            message:@"Hello!" delegate:self 
                                            cancelButtonTitle:@"Done" 
                                            otherButtonTitles:nil];
[alert performSelectorOnMainThread:@selector(show)
                            withObject:nil
                            waitUntilDone:NO];
[alert release];
0 голосов
/ 17 марта 2011

Может ли это предупреждение находиться в большом цикле, а вы не работаете в нескольких потоках? Потемнение экрана и ничего не происходит - это то, что я приравниваю к запуску длинного процесса в главном потоке (поэтому пользовательский интерфейс не обновляется и не отображает предупреждение).

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

Вы получаете темный экран без всплывающего окна или более медленное всплывающее окно, если вы показываете UIAlertView из фонового потока.Просто верните его в основную ветку, и все будет хорошо.У меня только была эта проблема на прошлой неделе.

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

Делегат верен, но, возможно, из-за того, что вы делаете релиз в конце, это может вызвать проблемы.

Попробуйте с нулевым делегатом: -)

Например:

UIAlertView *alertView;
alertView = [ [ UIAlertView alloc ] init ];
[ alertView setMessage:@"Hello World" ];
[ alertView show ];
[ alertView release ];

Если это работает, то это был делегат, и вам нужно объявить переменную как класс var. Или это может быть в другом месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...