notifications UIScrollView
-
25-09-2019 - |
Question
Je coder une application qui fonctionne comme Weather.app d'Apple: Il y a un UIPageControl au fond et un UIScrollView au milieu de l'écran.
Dans mon code, je mis en œuvre la méthode - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
pour savoir quand l'utilisateur ne passer à une nouvelle page. S'ils se déplacent à une nouvelle page, je charge les données des pages adjacentes, à rendre plus rapide de commutation de page. (Dans l'un des exemples d'Apple, le - (void)scrollViewDidScroll:(UIScrollView *)sender
est utilisé, mais qui provoque mon application pour accrocher peu de temps lors du chargement d'une nouvelle page, il est donc ne convient pas.)
Ce code fonctionne très bien.
J'utilise scrollRectToVisible:
: pour faire défiler à l'intérieur du programme scrollview lorsque l'utilisateur clique sur le UIPageControl. Le problème est que le scrollRectToVisible:
n'a pas poster une notification au UIScrollViewDelegate quand il est fait défiler -. Si le code responsable du chargement des pages adjacentes jamais appelée à l'aide de la UIPageControl
Y at-il moyen de faire le UIScrollView informer son délégué quand il est appelé par la méthode scrollRectToVisible:
? Ou vais-je utiliser des fils afin d'éviter que mon application du gel?
Merci!
- Ry
La solution
Que diriez-vous -scrollViewDidEndScrollingAnimation:
?
Si cela ne fonctionne pas, essayez d'écouter la notification de UITextSelectionDidScroll
. (Bien sûr, il est sans papier.)
Sinon, une méthode SDK de sécurité est de mesurer le temps nécessaire pour l'animation et envoyer une notification tardive sur le site d'appel de -scrollRectToVisible:
.
Autres conseils
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 invités
.