UIAlertView не отображается - PullRequest
       6

UIAlertView не отображается

0 голосов
/ 10 января 2011

У меня небольшая проблема с одним из моих UIAlertViews.Я пытаюсь показать это, выполнить некоторые задачи, а затем автоматически уволить.Это код, который я использую в настоящее время:

callingTaxi = [[UIAlertView alloc] initWithTitle:@"" message:@"検索中" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil, nil];
[callingTaxi show];
/* Do some tasks */
[callingTaxi dismissWithClickedButtonIndex:0 animated:YES];
[callingTaxi release];

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

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

Ответы [ 5 ]

3 голосов
/ 10 января 2011

Он показывает, но вы сразу же отклоняете его, вместо того, чтобы ждать, пока пользователь что-то сделает, с

[callingTaxi dismissWithClickedButtonIndex:0 animated:YES];

У iOS нет времени полностью его отрендерить.В любом случае, это не то, как dismissWithClickedButtonIndex должен использоваться.Чего ты здесь пытаешься достичь?

Редактировать: Полагаю, вам нужно назначить делегата для UIAlertView и позволить делегату обрабатывать то, что происходит внутри AlertView.

1 голос
/ 30 мая 2011

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

Если вы обновите свой код, чтобы использовать блоки и очереди отправки, все будет работать:

callingTaxi = [[UIAlertView alloc] initWithTitle:@"" message:@"検索中" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil, nil];
[callingTaxi show];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, NULL), ^{
    /* Do some tasks */
    dispatch_async(dispatch_get_main_queue(), ^{
        // this code is back on the main thread, where it's safe to mess with the GUI
        [callingTaxi dismissWithClickedButtonIndex:0 animated:YES];
        [callingTaxi release];
    });
});
1 голос
/ 10 января 2011

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

0 голосов
/ 15 августа 2011

просмотр uialert отклоняется: [callTaxi dismissWithClickedButtonIndex: 0 animated: YES];прежде чем пользователь сможет прочитать его.

Как долго вы собираетесь, чтобы конечный пользователь прочитал это ???

0 голосов
/ 10 января 2011

вы должны создать метод для alertview

- (void) alertView: (UIAlertView *) alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{
// Do stuff
// Or if you have multiple buttons, you could use a switch

[callingTaxi release];

Или вы могли бы автоматически выпустить ..

Но x3ro дал правильный ответ, вы вызываете метод самостоятельно, а не ждете, пока пользователь нажмет кнопку.

...