2010-11-02 6 views
3

J'ai deux NSOutlineViews montrés côte à côte ils contiennent le même nombre de lignes (ceci est une condition préalable) et je dois les synchroniser quand l'utilisateur fait défiler la souris, le clavier ou les barres de défilement pour voir la même portion de vue .Comment détecter le défilement de NSOutlineView?

Je suis un débutant dans le pays Cocoa et je suis incapable de trouver comment cela peut être accompli

Répondre

3

Vous voulez obtenir l'affichage du clip de vue de défilement englobante du NSOutlineView:

NSClipView * clipView = [[outlineView enclosingScrollView] contentView]; 

... et définissez -setPostsFrameChangedNotifications: sur YES. Écoutez le NSViewFrameDidChangeNotification de cette vue et répondez en conséquence.

Note: La nomenclature n'est pas très claire. La première attente de -contentView de la plupart des gens est qu'elle renvoie la vue défilée. La méthode -contentView: renvoie la vue NSClipView de la vue de défilement tandis que la méthode -documentView: renvoie la vue en cours de défilement.

+0

Cela ne fonctionne pas, lorsque je développe ou réduis les nœuds de vue, la notification est appelée, mais lorsque je fais défiler la vue, la notification n'est pas appelée – dafi

+0

Bah. Avait eu tort, désolé. Actualisé. –

+0

Le problème n'est pas lié à clipView, mais en utilisant NSViewFrameDidChangeNotification la notification est appelée * seulement * lorsque vous redimensionnez la vue * ou * développez les éléments mais * n'est pas appelée * lorsque vous essayez de * faire défiler * dans la vue. merci – dafi

Questions connexes