我正在扩展TTThumbsViewController
以显示来自外部源的照片。一切都很好,但我想改变控制器的一种行为:我想在TTThumbsViewController
中显示/加载图像,而用户仍在滚动,而不仅仅是当用户完成滚动。
我看到,在TTTableViewDelegate.m
的请求被暂停时滚动开始,我已经尝试设置它没有没有,但它似乎只获取图像,而不是实际显示他们完成加载。
//TTTableViewDelegate.m
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
[TTURLRequestQueue mainQueue].suspended = YES;
...
}
此外,我钩到开始和结束拖动委托调用尝试和刷新视图每秒钟左右的希望显示缩略图,我已经尝试调用invalidateView
, reload
和一对更多的主线程,但似乎没有工作(invalidateModel
不适合我的目的在这里)。
Thanks in advance
Edit1:当我使用[TTURLRequestQueue mainQueue].suspended = NO;
滚动时,状态栏中有一个加载器,但它实际上并不获取图像,与wireshark确认。
Edit2:经过更多的调试,我发现请求以编程方式发送,但响应仅在我们完成滚动后收到,因此似乎NSURLConnection
的异步委托方法没有触发,而scrollView
正在滚动,但我已经设法在另一个视图控制器中做类似的代码(工作)与tableView而不使用three20库。
在谷歌搜索了无数的线程和论坛后,我终于实现了我想要的行为,虽然我改变了三个20代码,而不是在一个部分扩展它:在我的thumbsViewController
中,我实现了以下委托,允许在滚动时发出请求:
-(void)didBeginDragging {
[super didBeginDragging];
[TTURLRequestQueue mainQueue].suspended = NO;
}
现在解决连接不被处理的问题,而滚动,我发现NSURLRequest won't火,而UIScrollView是滚动有用的,在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];
}