8
votes

UitailView glisser la distance avec UirefreshControl

J'ai des problèmes de mise en œuvre d'un UireFreshControl sur un utableview.

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.

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.

Qu'est-ce que je manque? Vraiment besoin d'aide sur celui-ci!

Merci d'avance


0 commentaires

3 Réponses :


1
votes

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é. xxx


1 commentaires

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...



2
votes

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 uiscrollview est beaucoup plus grande que son superview ... < / p>

Vérifiez votre UiscrollView S parce que la "distance glisser" est un pourcentage de cette hauteur. Ideme va pour utableview aussi, puisqu'il s'agit d'une classe enfant de Uiscrollview .

EDIT: 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 pour plus d'informations.

Mais en général, il se produira si votre hauteur Uiscrollview est différente de son conteneur parent (par exemple l'écran lui-même).


1 commentaires

UiscrollView Support pour UireFreshControl Démarre sur iOS 10. Avant que vous ayez eu une grave dérive. Voir SO 29791995



0
votes

Après quelques tests approfondis et jouant avec Uikit, je suis arrivé à une conclusion.

TL; DR H1>

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
}


0 commentaires