2011-12-02 74 views
2

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

我看到​​当滚动开始时,请求被暂停,我试图设置它不是NO,但它似乎只是获取图像,并没有实际显示它们,当他们完成加载。

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

此外,我挂在开始和结束拖动代表呼吁,试图刷新视图每秒左右,与显示缩略图的希望,我已经打过电话invalidateViewreload和一对夫妇更在主线程但似乎没有工作(invalidateModel不适合我这里的目的)。

任何人都可以指向正确的方向吗?

在此先感谢

EDIT1:有状态栏加载器,如果我滚动,当我使用[TTURLRequestQueue mainQueue].suspended = NO;,但它实际上并没有获取相关的图片,使用Wireshark证实。

EDIT2:多一点的调试,我发现该请求被编程发送,但我们完成滚动后的反应时只收到,这样看来的NSURLConnection异步委托方法而scrollView被滚动不烧成后,但我设法在另一个视图控制器中使用tableView做类似的代码(工作),而不使用three20 lib。

回答

0

周围的Googling多个线程,我终于实现了我想要的行为的论坛,虽然我改变了,而不是在一部分伸出它three20代码后:在我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]; 
}