Gérer les scrollers

olivier555

Membre confirmé
11 Janvier 2005
20
0
Bonjour!
J'ai des difficultés pour réaliser un point précis de mon projet. En fait, ce que je voudrais faire, c'est une custom vue (contrôlée par une classe que j'ai écrite) entourée de scrollers. Le problème c'est que ces scrollers, je veux qu'ils envoient des évènements lorsque l'utilisateur les touche (que ça déclenche des fonctions quoi). De plus, je veux qu'ils soient tout le temps présent, même si l'image ne dépasse pas de la vue. En bref, je veux les contrôler comme n'importe quel objet indépendamment de la vue. Vous avez des idées s'il vous plaît??
 
Les scrollers sont utilisés en général pour défiler dans un document. C'est pourquoi apple propose la classe NSScrollView. On peut la mettre depuis IB

voila ce que dit Apple dans la doc de NSScroller:
An NSScroller object is a user control for scrolling a document view within a container view. You normally don?t need to program with NSScrollers, as Interface Builder allows you to fully configure them with an NSScrollView.

N'est-il pas préférable d'utiliser des NSSlider dans ton cas ?
Sinon, il faut essayer de créer le NSScroller et de le mettre dans la view comme ça:
[myView addSubview:myScroller];

La classe NSScrollView permet aussi d'accéder aux scrollers via les méthodes: - horizontalScroller et -verticalScroller
 
Bon je reviens sur cet épineux problème des scrollers.
Tout d'abord merci de ta réponse peon.master. Non il n'est pas préférable d'utiliser des NSSliders parce que pour l'utilisateur ils seront juste des scrollers normaux.
Ma premère question est la suivante : faut-il que j'encapsule ma custom view dans une NSScrollView? Ensuite, autre problème, lorsque je mets une scroll view, la méthode [scroller setFloatValue:0.5 knobProportion:0.5]; ne marche pas. Elle affiche juste le scroller sans knob! Parce que forcément, si je veux appeler des fonctions avec mes scrollers, la première étape consiste à afficher un knob!! Enfin pour ce qui est de l'appel aux foncitons, c'est avec setAction, c'est ça??
Bon, je vous remercie par avance de votre aide (j'ai beaucoup de mal avec ça)!!
++
oliv
 
OK alors j'ai fait des trucs... qui marchent pas. Je vous rappelle que je souhaite appeler des fonctions avec mes scrollers autour de ma NSView. Est-ce que vous pouvez m'aider?? (désolé, je ne fais que poser des questions à la con et je suis loin d'avoir le niveau de répondre aux vôtres...) Là j'en peux plus je vais péter un câble.
Donc voila j'ai écrit le code suivant dans awakeFromNib:

Bloc de code:
scrollerV = [scroll verticalScroller];
[scrollerV setTarget:self];
[scrollerV setAction:@selector(machin)];

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??