iPhoneアプリケーションからWebサーバーに文字列を送信しています。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が表示されます。問題は、進行状況ビューが表示されると、進行状況バーがすぐにいっぱいになり、次に再開してタイマーに作用することです。プログレスビューがタイマーに代わって動作を開始する前にプログレスバーを埋めるのはなぜですか?