ダウンロードしたオブジェクトとダウンロード中のオブジェクトを含むテーブルビューがあります。ここで、ダウンロードセルは2つのラベル、1つのUIProgressViewと1つのUIButtonでカスタムされています。
私の NSURLConnection デリゲートは、オブジェクトのダウンロード中に進行状況を更新し続けます。ただし、セルのリロード中は、セル内の UIButton を押すのが非常に難しく、応答が得られるように非常に速く押し続ける必要があります。私が見つけた問題は、デリゲートがセルを頻繁に更新することです (約 0.002 秒)。そのため、その後更新するたびに頻度を 0.1 秒に設定しましたが、UIButton はまだ非常に押しにくく、設定できませんUIProgressview の更新が連続しなくなるため、間隔が長すぎます。
デリゲートのコードは次のとおりです。
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
if(startTime == nil) startTime = [NSDate date];
NSDate *currentTime = [NSDate date];
NSTimeInterval timeInterval = [currentTime timeIntervalSinceDate:startTime];
bytesReceived = [receivedData length];
if (timeInterval >=0.1) {
startTime = currentTime;
double percent = bytesReceived/expectedBytes;
WVSecondViewController *downloadsController = [[WVSecondViewController alloc] initWithNibName:nil bundle:nil];
int index = [downloadsController.name0 indexOfObject:resourceName];
[downloadsController.progress0 replaceObjectAtIndex:index withObject:[NSNumber numberWithFloat:percent]];
NSIndexPath *indexP = [NSIndexPath indexPathForRow:index inSection:0];
[downloadsController.downloadsTableview reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexP] withRowAnimation:UITableViewRowAnimationNone];
}
}
downloadsController.progress0 は、進行状況ビューを更新するために使用されるテーブルビューのデータソースです。
コードの最後の行を削除すると
[downloadsController.downloadsTableview reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexP] withRowAnimation:UITableViewRowAnimationNone];
その後、UIButton を通常どおり押すことができます。
どうすれば問題を解決できますか?いつも助けてくれてありがとう。