我正在使用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];
}
}
答案 0 :(得分:0)
可能在其他地方你正在改变networkActivityIndicatorVisible
标志的值。在代码中搜索[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
。
答案 1 :(得分:0)
进度条是否已添加到顶级UIWindow?
我的猜测是,因为UIAlertView创建了自己的UIWindow,所以sendGratuityRequest
中的代码正在向该窗口添加栏,按下按钮后不久就会删除该栏。
两种可能的解决方案:
将代码放在alertView:didDismissWithButtonIndex:
而不是alertView: clickedButtonAtIndex:
。 (我不是100%肯定这会解决它。)
使用更好的逻辑来选择正确的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;
}