iOS7 UIRefreshControl change contentInset
J'ai un UINavigationController
dans mon application. Le UINavigationBar
est définie à l'opaque et défilez toutes les opinions ne se chevauchent pas en dessous de la barre.
Dans un point de vue que j'ai un UITableView
. Le cadre de la UITableView
est (0 0; 320 504)
sur mon iPhone 5. c'est à dire la hauteur est de 568 - 64 (la hauteur de la barre de navigation et la barre d'état).
La contentInset
de la UITableView
est (0, 0, 0, 0)
. Lors de l'affichage de la table charge l' contentOffset
est (0, 0)
.
C'est très bien. Fonctionne à merveille.
J'ai ajouté un UIRefreshControl
à la vue de la table. Cela fonctionne une couple de fois, mais ensuite, après quelques temps de faire tirer pour rafraîchir le contenu en haut est "coincé" en vertu de la barre de navigation.
Quand cela arrive, je inspecter le contentInset
et il est maintenant (-60, 0, 0, 0)
.
Est-il un moyen pour arrêter la UIRefreshControl de la modification de la contentInset
?
source d'informationauteur Fogmeister
Vous devez vous connecter pour publier un commentaire.
C'est probablement la raison pour laquelle
UIRefreshControl
est actuellement pris en charge uniquement surUITableViewController
plutôt que par plus de tout le scrollview (que vous pouvez sortir avec, dans de nombreux cas).L'actualisation de contrôle ne sa magie en bricoler avec le contenu des encarts de la scrollview - surtout quand elle se termine rafraîchissant. Malheureusement, la vue-contrôleur est aussi bricoler avec le contenu des encarts de défilement de la vue de l'adapter en vertu de l'translucide nav et la barre d'état. Le plaisir s'ensuit. Est-ce aussi un problème sur iOS 6 (ou "bon vieux iOS6" comme je l'ai appelé lorsque l'on traite de la même question).
La solution la plus rapide est sans doute pour ajouter votre vue de la table comme un enfant UITableViewController au lieu d'un simple sous-vue. Je pense que UITableViewController gère les encarts pour vous à la fin de l'actualisation. Si cela ne fonctionne pas, j'ai des solutions de contournement pour cela, mais il devra attendre jusqu'à ce que je rentre dans le bureau.
Je vais ajouter cette réponse ici dans le cas où l'on a des problèmes avec
UIRefreshControl
en modifiant les propriétés de contrôle (attribué le titre, teinte, etc...):Ne plaisante pas avec la
UIRefreshControl
sur-viewDidLoad:
utilisez-viewDidAppear:
à la place.Réinitialiser votre vue de la table contentInset.
Vous avez besoin de remplacer setContentInset: en vous UICollectionView