TTThumbsViewController在滚动时显示图像

时间:2011-12-02 11:29:47

标签: iphone image scroll refresh ttthumbsviewcontroller

我正在扩展TTThumbsViewController以显示来自外部来源的照片。一切正常但我想改变控制器的一种行为:我想在用户仍在滚动时在TTThumbsViewController中显示/加载图像,而不仅仅是在用户完成滚动时。

我在TTTableViewDelegate.m中看到,当滚动开始时请求被暂停,我尝试设置它没有没有,但它似乎只是获取图像而不是在完成加载时实际显示它们。

//TTTableViewDelegate.m
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
  [TTURLRequestQueue mainQueue].suspended = YES;
  ...
}

此外,我迷上了开始和结束拖动委托调用,每隔一秒左右尝试刷新视图,希望显示缩略图,我试着调用invalidateViewreload和在主线程上结合更多但似乎没有工作(invalidateModel不符合我的目的)。

有人能指出我正确的方向吗?

提前致谢

Edit1 :如果我在使用[TTURLRequestQueue mainQueue].suspended = NO;时滚动但状态栏中有一个加载程序,但它实际上并未获取图像,并通过wireshark确认。

Edit2 :经过多次调试后我发现请求是以编程方式发送的,但只有在我们完成滚动后才收到响应,所以似乎NSURLConnection的异步委托方法是在滚动scrollView时没有触发,但我设法在另一个带有tableView的视图控制器中执行类似的代码(工作)而不使用three20 lib。

1 个答案:

答案 0 :(得分:0)

在搜索了大量的线程和论坛后,我终于实现了我想要的行为,虽然我更改了三个代码而不是将其扩展为一部分:在我的thumbsViewController我实现了以下委托,允许在滚动时发出请求:

-(void)didBeginDragging {
    [super didBeginDragging];
    [TTURLRequestQueue mainQueue].suspended = NO;
}

现在要解决滚动时未处理连接的问题,我发现NSURLRequest won't fire while UIScrollView is scrolling很有用,而且在TTRequestLoader.m中我更改了以下内容:

//TTRequestLoader.m
- (void)connectToURL:(NSURL*)URL {
    ...
    //To allow requests while scrolling we must schedule the conenction in other run loop
    //_connection = [[NSURLConnection alloc] initWithRequest:URLRequest delegate:self];
    //code above was replaced by the one below
    _connection = [[NSURLConnection alloc] initWithRequest:URLRequest delegate:self startImmediately:NO];
    [_connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
    [_connection start];
}