Scroller
olivier555
Membre
Re bonjour!
J'ai une autre question. Est-il possible de mettre un scroller idépendamment d'une vue sur PB (en fait je cherche à dissocier complètement le scroller de ma vue puisqu'il n'aura pas le même comportement qu'un scroller normal : chaque fois que l'utilisateur bougera le scroller, des fonctions seront appelées)?
J'ai une autre question. Est-il possible de mettre un scroller idépendamment d'une vue sur PB (en fait je cherche à dissocier complètement le scroller de ma vue puisqu'il n'aura pas le même comportement qu'un scroller normal : chaque fois que l'utilisateur bougera le scroller, des fonctions seront appelées)?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Quand je crée le scroller, j'ai qu'un scroller horizontal. Comment qu'on fait pour en avoir un vertical??? (je sais je sais, quetion con)
Vous l'aurez compris, j'galère....
Donc voila j'ai écrit le code suivant dans awakeFromNib:
Où scroll est un IBOutlet pointant vers la NSScrollView mise autour de ma View. Et donc là il se passe quelque chose de très bizare. En fait, ma classe n'est pas encore allouée quand l'awakeFromNib est exécuté. Mais lorsque j'examine self dans le débugger l'instance a une adresse A. Ensuite, j'alloue ma classe et là l'instance a une autre adresse B. Le problème est que lorsque je bouge mon scroller, c'est l'instance A qui est sollicitée alors que je veux la B!! En fait, c'est comme s'il y avait 2 instances de cette classe portant le même nom! De plus, lorsque j'alloue dès le départ ma classe ou que je mets les lignes de code précédentes dans l'initWithFrame, rien ne se passe lorsque je bouge mon scroller. Auriez-vous une petite idée??
Le mieux est d'encapsuler la vue dans une sous-classe de nsscrollview (dans IB)dans laquelle tu surcharges la méthode [tt]-(void)_doScroller:(NSScroller*)scroller[/tt] (je sais, elle n'est pas documentée), avec le code suivant:
[tt]-(void)_doScroller:(NSScroller*)scroller {
if (scroller == _hScroller) {
//code pour le scroller horizontal
} else {
//code pour le scroller vertical
}
}[/tt]
PS: pour ceux qui se demandent comment j'ai pu trouver ça, vu que c'est pas documenté, voici une possibilité: [tt]NSLog(NSStringFromSelector([[myScrollView verticalScroller] action]));[/tt]
J'ai essayé ça mais ça marche pas. Aurais-je oublié une allocation?
La taille du knob dans ce cas est déterminée par la taille de la clipview, ce qui ne t'aidera pas.