2013-12-23 2 views
0

Я использую класс ASIHTTP для связи с сервером. Теперь, когда какой-либо запрос выполняется, отображается панель процесса до тех пор, пока запрос не будет отвечать сервером или не будет тайм-аут. Теперь я хочу сделать запрос, когда пользователь нажимает кнопку «Да» в режиме предупреждения. Когда я делаю, эта панель процессов показывается только пока. Он не отображается до завершения запроса.ASIHTTP class processbar

- (IBAction)sendGratuity:(id)sender { 

if([[txtAmount.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]>0){ 
    UIAlertView *confirmAlert = [[UIAlertView alloc] initWithTitle:@"Confirm" 
                message:@"Are you really want to send gratuity to this User?" 
                delegate:self 
              cancelButtonTitle:@"No" 
              otherButtonTitles:@"Yes", nil]; 
    [confirmAlert show]; 

} 
else{ 
    [self sendGratuityRequest]; //if request made from here then it is working fine 
} 

метод AlertView:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
if(buttonIndex==1){ 
    [self sendGratuityRequest]; 
} 

} 

ответ

0

Является ли индикатор выполнения добавлен в верхний уровень UIWindow?

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

два возможных решения:

  1. Поместите свой код в alertView:didDismissWithButtonIndex: вместо alertView: clickedButtonAtIndex:. (Я не уверен на 100%, это исправит это.)

  2. Используйте лучшую логику, чтобы выбрать правильный UIWindow. Правильный код может выглядеть следующим образом, но может быть различным в зависимости от того, как ваше приложение использует UIWindows:

    NSEnumerator *frontToBackWindows = [[[UIApplication sharedApplication]windows]reverseObjectEnumerator]; 
    
    for (UIWindow *window in frontToBackWindows) 
        if (window.windowLevel == UIWindowLevelNormal) { 
         // Add the progress bar to this UIWindow 
         break; 
        } 
    
0

Может быть где-то еще вы изменяете значение из networkActivityIndicatorVisible флага. Поиск [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; в вашем коде.

+0

Я думаю, что ОП просит о индикатору выполнения, а не индикатор сетевой активности. –

+0

@AaronBrager может быть его сетевым указателем активности, потому что его показывали, когда я делаю запрос (круговой показ процесса продолжается) ... И я также думаю, что вы правы ... Это может быть в окне просмотра предупреждений .... Я попробую ваше предложение, а затем сообщите об этом – vivek

Смежные вопросы