J'ai des problèmes de mise en œuvre d'un UireFreshControl sur un utableview. p>
Tout fonctionne bien, sauf le fait que je dois faire défiler quelque chose comme 80% de l'écran de l'uirefreshControl pour être déclenché. Parfois, je ne suis même pas capable de le déclencher car il y a une barre d'onglets située au bas de l'écran, ce qui annule le mouvement de défilement lorsque le doigt l'atteint. P>
J'ai regardé d'autres applications, à savoir 'Mail' d'Apple, où l'uirefreshControl est déclenché après avoir défilé seulement 30% de l'écran. P>
Qu'est-ce que je manque? Vraiment besoin d'aide sur celui-ci! P>
Merci d'avance p>
3 Réponses :
Vous n'avez probablement pas besoin d'utiliser UirefreshControl et d'utiliser simplement ScrollViewDidscroll (ou TableViewDidscroll si une vue de table) sur gérer votre actualisation en conséquence, car UirefreshControl ne peut pas être modifié.
Merci d'avoir aidé, cependant, je crois que UirefreshControl existe d'être utilisé et «le mail». Je me suis rendu compte que dans mon application, la distance de défilement de l'utableview par rapport au balayage du doigt est beaucoup plus courte qu'avec la «mail», c'est-à-dire pour la même distance de balayage du doigt, la «mail 'Uitamview fait défiler beaucoup plus que mes habitudes d'entretien. Je me demande pourquoi...
J'ai eu un problème similaire et il est tout à fait possible que c'est la même cause pour vous.
Pour moi, je me suis allé que l'indicateur de défilement me rendant incapable de voir la cause évidente du problème: la hauteur Vérifiez votre EDIT: strong>
Semble que ce n'est pas le seul moyen de reproduire ce problème, car la distance de glace requise pour déclencher le rafraîchissement est calculée de manière buggy. Reportez-vous à cette question strong> pour plus d'informations. P>
Mais en général, il se produira si votre hauteur uiscrollview code> est beaucoup plus grande que son
superview code> ... < / p>
UiscrollView CODE> S parce que la "distance glisser" est un pourcentage de cette hauteur. Ideme va pour
utableview code> aussi, puisqu'il s'agit d'une classe enfant de
Uiscrollview code>. P>
Uiscrollview code> est différente de son conteneur parent (par exemple l'écran lui-même). P>
UiscrollView CODE> Support pour
UireFreshControl Code> Démarre sur iOS 10. Avant que vous ayez eu une grave dérive. Voir SO 29791995
Après quelques tests approfondis et jouant avec Uikit, je suis arrivé à une conclusion.
UirefreshControl code> n'est pas assez intelligent. Pour corriger Ajouter ce code dans
ViewDidAppear Code> ou
ViewDidLayouTouSubviews CODE> P>
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let refreshControl = scrollView.refreshControl
scrollView.refreshControl = nil
scrollView.refreshControl = refreshControl
}