TTThumbsViewController отображает изображения при прокрутке
Я расширяю TTThumbsViewController
отображать фотографии из внешнего источника. Все работает нормально, но я хотел бы изменить одно поведение контроллера: я хотел бы отображать / загружать изображения в TTThumbsViewController
в то время как пользователь все еще прокручивает, а не только когда пользователь заканчивает прокрутку.
Я видел это в TTTableViewDelegate.m
запросы приостанавливаются, когда начинается прокрутка, и я попытался установить его как NO, но кажется, что он только получает изображения, а не отображает их, когда они заканчивают загрузку.
//TTTableViewDelegate.m
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
[TTURLRequestQueue mainQueue].suspended = YES;
...
}
Кроме того, я подключился к началу и концу перетаскивания вызовов делегатов, чтобы попытаться обновить представление каждую секунду или около того в надежде отобразить эскизы, я попытался вызвать invalidateView
, reload
и еще пара на главной ветке, но ни одна, похоже, не работает (invalidateModel
не подходит моим целям здесь).
Кто-нибудь может указать мне правильное направление?
заранее спасибо
Edit1: в строке состояния есть загрузчик, если я прокручиваю при использовании [TTURLRequestQueue mainQueue].suspended = NO;
но на самом деле он не извлекает изображения, подтвержденные Wireshark.
Edit2: после некоторой дополнительной отладки я обнаружил, что запрос отправляется программно, но ответ принимается только после того, как мы закончим прокрутку, поэтому кажется, что асинхронные методы делегата NSURLConnection
не стреляют в то время как scrollView
прокручивается, но мне удалось сделать аналогичный код (рабочий) в другом контроллере представления с tableView без использования трех20 lib.
1 ответ
Поискав по многочисленным темам и форумам, я наконец достиг желаемого поведения, хотя я изменил код 320 вместо того, чтобы расширять его в одной части: в моем thumbsViewController
Я реализовал следующий делегат, позволяющий делать запросы во время прокрутки:
-(void)didBeginDragging {
[super didBeginDragging];
[TTURLRequestQueue mainQueue].suspended = NO;
}
Теперь, чтобы решить проблему, связанную с тем, что соединения не обрабатываются во время прокрутки, я обнаружил, что NSURLRequest не будет срабатывать, пока 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];
}