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];
}
Другие вопросы по тегам