2010-07-09 5 views
0

J'ai une sous-classe UIViewController dont la propriété view est définie sur une sous-classe UIScrollView (par exemple ProfileScrollView). Maintenant, j'ai surchargé drawRect: méthode, dans laquelle je dessine beaucoup de texte et place UIButtons comme subview entre les textes. En fonction des données textuelles, j'ai défini contentSize de scrollView dans cette méthode drawRect:. Maintenant, lorsque je défile cette vue, les boutons défilent mais le texte reste stagnant. S'il vous plaît aider avec ce problème. MerciLe défilement UIScrollView n'est pas correct

Répondre

1

Je pense que votre problème vient du fait que vous utilisez drawRect: pour votre texte. Je suis à peu près sûr que le positionnement donné par l'argument CGRect est absolu et ne dépend pas du décalage actuel du contenu de scrollView.

Avez-vous ajouté vos sous-vues (boutons et texte) directement dans l'UIScrollView? Si c'est le cas, essayez d'insérer un UIView simple dans UIScrollView, qui contiendra toutes les sous-vues. Devrait être quelque chose comme ceci:

-> UIScrollView 
    -> UIView 
     -> UIButtons 
     -> Text 
     -> ... 

Alors drawInRect: puisera le texte contenant UIView avec une position absolue, et UIScrollView fera UIView (et par conséquent tout son contenu) défilement.

+0

Merci d'avoir répondu. Je pense, c'est la solution requise. Mais pourquoi ne fait-il pas défiler le texte comme j'ai redéfini drawRect: of scrollView? – Nishit

+0

Avez-vous essayé, et l'a-t-il fonctionné efficacement? Parce que j'avais quelques doutes après avoir posté ma réponse. Mais je suppose que la raison est que vous dessinez votre texte en utilisant drawInRect ou drawAtPoint de NSString, qui place le texte dans une position absolue. UIButton (et d'autres UIViews) sont placés relativement à leur superview, ainsi UIScrollView peut modifier leur positionnement en fonction de l'endroit où l'utilisateur a défilé. – Jukurrpa

+0

Oui, votre solution a fonctionné. Cependant, concernant mon approche précédente, j'ai placé un point d'arrêt à l'intérieur de drawRect: et quand je faisais défiler le scrollView, drawRect: n'a pas été appelé. Donc, cela signifie qu'il n'a pas dessiné la corde encore et encore au même point absolu, plutôt qu'il l'a dessiné dans une vue constante (pas scrollView). – Nishit

Questions connexes