2010-04-10 10 views
4

Je suis en train de coder une application qui fonctionne un peu comme le Weather.app d'Apple: il y a un UIPageControl en bas et un UIScrollView au milieu de l'écran. Dans mon code, j'ai implémenté la méthode - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView pour déterminer quand l'utilisateur s'est déplacé vers une nouvelle page. Si elles se déplacent vers une nouvelle page, je charge les données des pages adjacentes pour accélérer le changement de page. (Dans l'un des exemples d'Apple, le - (void)scrollViewDidScroll:(UIScrollView *)sender est utilisé, mais cela entraîne le blocage de mon application lors du chargement d'une nouvelle page, donc ce n'est pas approprié.) Ce code fonctionne très bien.Notifications UIScrollView

J'utilise scrollRectToVisible:: pour faire défiler par programmation le scrollview lorsque l'utilisateur clique sur le UIPageControl. Le problème est que le scrollRectToVisible: n'envoie pas de notification à UIScrollViewDelegate lorsque le défilement est terminé - le code chargé de charger les pages adjacentes n'est jamais appelé lors de l'utilisation de UIPageControl.

Est-il possible de faire en sorte que UIScrollView notifie son délégué lorsqu'il est appelé par la méthode scrollRectToVisible:? Ou devrais-je utiliser des threads pour empêcher mon application de geler?

Merci!

- Ry

+1

Veuillez supprimer '[iPhone]' du titre, car vous n'ajoutez pas d'étiquettes aux titres des questions. –

Répondre

4

Que diriez-vous -scrollViewDidEndScrollingAnimation:?

Si cela ne fonctionne pas, essayez d'écouter la notification UITextSelectionDidScroll. (Bien sûr, il n'est pas documenté.)

Alternativement, une méthode SDK-safe est mesurer le temps pris pour l'animation et envoyer une notification retardée sur le site d'appel de -scrollRectToVisible:.

2

Vous pouvez ajouter cette méthode déléguée à la place:

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView 

La vue de défilement appelle cette méthode à la fin de ses mises en œuvre de la UIScrollView et setContentOffset: animation: et scrollRectToVisible: animation: méthodes, mais seulement si les animations sont demandées.