6
votes

UitailView fait automatiquement défiler automatiquement après une reloaddata

J'ai une vue de table qui défile automatiquement un bit dans mon application iPad (OS X 10.7.3, Xcode 4.3.2) et ne savez pas où rechercher la cause. Voici la situation:

L'utableview remplit tout l'écran et la plupart des cellules sont des cellules à hauteur fixe. La seule exception est une cellule contenant une vision uitéxt et une hauteur dynamique (ou en d'autres termes, la hauteur de la cellule s'adapte à la quantité de texte). P>

Le problème se manifeste si la table Il arrive que la cellule de hauteur dynamique soit coupée lorsque la vue de la table est en haut. Lorsque la vue des premières charges, la table est dessinée comme normale, avec une seule partie de la cellule UITEXTVIEW visible. Toutefois, si j'affiche une uipopovercontroller, je dois faire une reloaddata après que la pondérale soit rejetée, et lorsque je le fais, la vue de table fera défiler suffisamment pour afficher tout l'UitextView. (Pas la cellule contenant l'uitextview de View vous, juste l'UITEXTVIEW. La table est une table groupée et la cellule UITEXTVIEW est la seule cellule de la section, le bord inférieur arrondi n'est toujours pas visible après ce défilement de fantôme.) p>

Je ne peux voir aucun code dans mon application qui fait défiler la vue de la table ou définir un décalage de contenu, donc je suis totalement confus quant à ce qui pourrait causer cela. P>

Essayer et Rétrécissez-le, j'ai mis en place ma vue pour honorer l'Uiscrollviewelegate, et si je mets un point d'arrêt dans la méthode ScrollViewDidscroll: méthode, le programme s'arrête en fait après que la pondeuse disparaisse et me donne la backtrace suivante: P>

Printing description of scrollView:
<UITableView: 0xc3ed400; frame = (0 99; 383 817); clipsToBounds = YES; 
autoresize = W+RM+H; layer = <CALayer: 0x7bf1a40>; contentOffset: {0, 14}>


2 commentaires

J'ai un vague souvenir d'entendre quelque chose à ce sujet avant. Etant donné que UitablesViews sont une sous-classe UiscrollView et sont donc uitéxtviews, il peut obtenir tous les embrouillés. Pour deviner, essayez peut-être de changer certaines propriétés sur le TextView avant de recharger, telles que la défilation de désactivation?


Vous êtes correct, désactivez le défilement sur la vue textuelle avant que le reloaddata ne conserve que le défilement fantôme de se produire. Si vous postez votre commentaire comme réponse, je l'accepterai. Merci.


3 Réponses :


1
votes

J'ai un vague souvenir d'entendre quelque chose à ce sujet avant. Depuis UitailViews est un Uiscrollview Sous-classe et donc uitextviews Il peut être embrouillé.

À une supposition, essayez peut-être de modifier certaines propriétés sur le TextView avant de recharger, telles que la défilement désactivée? P>

[myTextView setScrollEnabled:NO];


0 commentaires

1
votes

Lorsqu'un UITEXTVIEVENVENUEVIEWSRESPRESPELER (à partir de iOS 3, je pense), s'il s'agit d'une entreprise Uiscrollview / Uitabilviewontroller, que ScrollView sera automatiquement défilé par iOS pour vous assurer que l'UITEXTVIEW est visible.

Pour une solution de contournement, jetez un coup d'œil à: Désactiver UiscrollView défilement lorsque Uitextfield devient le premier répondant


0 commentaires

0
votes

I Sous-classé la sous-classe UISCrollView CODE> UISCROLLVIEW SUBCLASED UITEXTFIELD CODE>) et assurez-vous que je n'accepte pas "Arbitrary" Contenu conteste:

override var contentOffset: CGPoint {
    set {
        let maxContentOffsetY = max(self.contentSize.height - self.frame.size.height, 0.0)
        super.contentOffset.y = min(newValue.y, maxContentOffsetY)
    }
    get {
        return super.contentOffset
    }
}


0 commentaires