Я отправляю строку на веб-сервер из приложения iphone. Я использую UIProgressView, чтобы показать ход выполнения запроса. Вот мой код:
-(IBAction)sendToServer:(id)sender{
NSString *url = [RequestUtil getWebURL];
NSString *jsonString = [JSONUtil jsonRunData: self.runDetails];
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:url]];
[request setTimeOutSeconds:60];
[request setPostValue:jsonString forKey:@"jsondata"];
[request setUploadProgressDelegate:myProgressIndicator];
[request setDelegate:self];
[request startAsynchronous];
progressTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(increaseAmount) userInfo:nil repeats:YES];
}
- (void)requestFailed:(ASIHTTPRequest *)request{
self.myProgressIndicator.hidden = TRUE;
// alert
}
- (void)requestFinished:(ASIHTTPRequest *)request {
myProgressIndicator.progress = 1.0;
// alert
}
-(void) increaseAmount{
progressNumber = progressNumber+0.2;
if(progressNumber <= 0.9){
myProgressIndicator.progress = progressNumber;
}else {
[progressTimer invalidate];
progressNumber = 0.0;
}
}
когда я нажимаю кнопку отправки на сервер, вызывается sendToServer. и это показывает UIProgressView. Проблема заключается в том, что когда отображается индикатор прогресса, он быстро заполняет свой индикатор выполнения, а затем запускается снова и действует по таймеру. Почему просмотр прогресса заполняет индикатор выполнения, прежде чем он начинает действовать от имени таймера?