ASIHTTP类进度条

时间:2013-12-23 14:11:34

标签: ios iphone uialertview asihttprequest

我正在使用ASIHTTP类与服务器进行通信。现在,当任何请求完成时,它会显示进程条,直到请求不是服务器没有响应或超时。现在我想在用户点击警报视图中的“是”按钮时发出请求。当我这样做时,进程条只是显示为while。直到请求完成才显示。

- (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];
}

}

2 个答案:

答案 0 :(得分:0)

可能在其他地方你正在改变networkActivityIndicatorVisible标志的值。在代码中搜索[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

答案 1 :(得分: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;
        }