affichage TTThumbsViewController images pendant le défilement
-
27-10-2019 - |
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.
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];
}