Question

J'extension TTThumbsViewController à des photos d'affichage de source externe. Tout fonctionne très bien, mais je voudrais changer le comportement du contrôleur. Je voudrais des images d'affichage / de charge dans TTThumbsViewController pendant que l'utilisateur défile toujours et non seulement lorsque les finitions utilisateur défilement

J'ai vu que dans TTTableViewDelegate.m les demandes sont suspendus lorsque le défilement commence et j'ai essayé le mettre pas NO, mais il semble que pour récupérer les images et non les afficher en fait quand ils ont fini le chargement.

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

En outre, j'accroché au début et de fin en faisant glisser les appels délégué pour essayer de rafraîchir la vue chaque seconde ou avec l'espoir d'afficher les vignettes, je l'ai essayé d'appeler invalidateView, reload et un couple plus sur le thread principal mais aucun semblait au travail (invalidateModel ne convient pas à mes fins ici).

pourrait point quelqu'un me dans la bonne direction?

Merci à l'avance

Edit1 :. Il y a un chargeur dans la barre d'état si je fais défiler quand je l'utilise [TTURLRequestQueue mainQueue].suspended = NO; mais il ne fait pas récupérer les images, confirmées avec Wireshark

Edit2 : après un peu plus de débogage j'ai trouvé que la requête est envoyée programatically mais la réponse est seulement reçu après que nous ayons fini de défilement, il semble que les méthodes de délégués asynchrones de NSURLConnection ne se déclenchent pas alors qu'un scrollView est défilée, mais j'ai réussi à faire un code similaire (travail) dans un autre contrôleur de vue avec un tableView sans utiliser Three20 lib.

Était-ce utile?

La solution

Après googler les discussions autour de nombreuses et forums, je finalement atteint le comportement que je voulais, bien que j'ai changé Three20 code au lieu de l'étendre dans une partie: dans mon thumbsViewController je mis en œuvre le délégué à la suite autorisons à effectuer pendant le défilement:

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

Maintenant, pour résoudre le problème des connexions ne sont pas traitées pendant que je défilement trouvé NSURLRequest ne sera pas le feu alors que UIScrollView défile utile et je TTRequestLoader.m changé les éléments suivants:

//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];
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top