Pregunta

Estoy ampliando TTThumbsViewController para mostrar fotos de una fuente externa. Todo funciona bien, pero me gustaría cambiar un comportamiento del controlador: me gustaría mostrar / cargar imágenes en TTThumbsViewController mientras el usuario todavía se está desplazando y no solo cuando el usuario termina de desplazarse.

Vi que en TTTableViewDelegate.m las solicitudes se suspenden cuando comienza el desplazamiento y he intentado configurarlo como NO, pero parece que solo busca las imágenes y no las muestra cuando terminan de cargarse.

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

Además, me enganché al principio y al final arrastrando llamadas de delegado para intentar actualizar la vista cada segundo más o menos con la esperanza de mostrar las miniaturas, intenté llamar a invalidateView, reload y un par más en el hilo principal, pero ninguno parecía funcionar (invalidateModel no se adapta a mis propósitos aquí).

¿Alguien podría indicarme la dirección correcta?

Gracias de antemano

Edit1 : hay un cargador en la barra de estado si me desplazo cuando uso [TTURLRequestQueue mainQueue].suspended = NO; pero en realidad no recupera las imágenes, confirmado con wirehark.

Edit2 : después de un poco más de depuración, encontré que la solicitud se envía programáticamente pero la respuesta solo se recibe después de que terminamos de desplazarnos, por lo que parece que los métodos delegados asincrónicos de NSURLConnection no se activan mientras un scrollView se está desplazando, pero me las arreglé para hacer un código similar (funcionando) en otro controlador de vista con un tableView sin usar three20 lib.

¿Fue útil?

Solución

Después de buscar en Google numerosos hilos y foros, finalmente logré el comportamiento que quería, aunque cambié el código tres20 en lugar de extenderlo en una parte: en mi thumbsViewController implementé el siguiente delegado que permite realizar solicitudes mientras me desplazo:

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

Ahora, para resolver el problema de las conexiones que no se procesan durante el desplazamiento, encontré NSURLRequest no se activará mientras UIScrollView se esté desplazando útil y en TTRequestLoader.m cambié lo siguiente:

//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];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top