1

我有一个包含下载和下载对象的表格视图,其中下载单元是自定义的,带有 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 是用于更新进度视图的 tableview 的数据源。

如果我删除最后一行代码

[downloadsController.downloadsTableview reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexP] withRowAnimation:UITableViewRowAnimationNone];

然后 UIButton 可以正常按下。

知道如何解决这个问题吗?非常感谢您的每一次帮助。

4

0 回答 0