2010-11-19 35 views
1

J'ai un NSScrollView qui est le parent d'une sous-classe NSView personnalisée. La sous-classe utilise la méthode contentSize de NSScrollView afin de mettre en forme ses sous-vues.NSScrollView taille de contenu incorrecte

Le problème est que lors du premier lancement, NSScrollView signale le contenu incorrect. Il rapporte que la taille est 15px plus que ce qu'elle devrait être (la largeur du scroller). Il me semble donc qu'il retourne le contentSize sans tenir compte de la largeur du scroller; cependant, dès que j'ajuste le cadre de la vue déroulante (par redimensionnement, etc.), la taille du contenu est correctement indiquée. Cela semble être juste un problème lors du lancement initial.

Cela devrait-il être signalé comme un bug, et y a-t-il de bonnes solutions à cela? Je pourrais utiliser la manière sale d'effectuer une vérification pendant la mise en page pour voir si c'est la première fois que la méthode a été appelée, puis déduire 15px de la taille du contenu, mais s'il y a quelque chose de mieux, cela serait apprécié.

Répondre

0

Quand est-ce que vous vérifiez la taille du contenu? Cela se produit-il lorsque votre vue est instanciée à partir du fichier nib, ou après que la plume a été entièrement désarchivée?

Ce que je ferais probablement Invoke votre méthode de mise en page à partir -viewDidMoveToWindow: ou -awakeFromNib

+0

Je l'appelle de -awakeFromNib – indragie

2

Je viens de tomber sur un problème similaire et la façon dont je l'ai résolu était d'observer la NSViewFrameDidChangeNotification de notification afficher le contenu de la vue du défilement (dans votre cas le NSView personnalisé).

Cette notification est déclenchée lorsqu'une barre de défilement est ajoutée/supprimée de la vue défilement, à quel point vous pouvez repositionner le contenu de votre vue.

+0

Merci de votre réception! – dmitrynikolaev

0

Utilisez-vous l'option pour masquer/afficher automatiquement les barres de défilement?