Flèches de scroller
olivier555
Membre
Bonjour!
Ca y est, mes scrollers marchent!! J'avais tenté de faire une classe faisant un peu trop de choses, et mon code était trop fouilli. Maintenant tout va bien sauf un dernier problème : Les flèches du scrollers n'ont aucune action. En fait, j'ai assigné au scroller une action :
C'est peut être la cause de mon problème. Actuellement, lorsque je clique sur les flèches, elles s'illuminent mais n'ont aucun effet sur la jauge du scroller (et ne font pas non plus appel à la fonction drawRect). Auriez vous une idée s'il vous plait? Merci!!
Ca y est, mes scrollers marchent!! J'avais tenté de faire une classe faisant un peu trop de choses, et mon code était trop fouilli. Maintenant tout va bien sauf un dernier problème : Les flèches du scrollers n'ont aucune action. En fait, j'ai assigné au scroller une action :
<br />[[scrollView verticalScroller] setTarget:self];<br />[[scrollView verticalScroller] setAction:@selector(drawRect:)];<br />
C'est peut être la cause de mon problème. Actuellement, lorsque je clique sur les flèches, elles s'illuminent mais n'ont aucun effet sur la jauge du scroller (et ne font pas non plus appel à la fonction drawRect). Auriez vous une idée s'il vous plait? Merci!!
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Mais ça ne change rien, les fleches n'ont toujours aucun effet...
[tt]
- (void)refresh
{
[self setNeedsDisplay:YES];
}
[/tt]
[tt]
[[scrollView verticalScroller] setAction:@selector(refresh];
[/tt]
T'es sûr qu'il faut mettre les ":" pour un sélector concernant une méthode n'attendant pas d'argument ? ???
En fait j'ai pris le pb à l'envers !!!
C'est sur qu'il faut les ":" puisque un setAction attend OBLIGATOIREMENT une méthode avec 1 seul argument le "sender"
C'est la méthode qui foire pas le sélector.
- (void)refresh:(id) sender
donc en faites, un [tt]setAction:@selector(refresh[/tt], correspond en faites a un [tt]setAction:@selector(refresh:nil)[/tt], et pour être correcte il faudrait donc mettre dans ce cas
[tt]setAction:@selector(refresh:self)[/tt]
c'est setAction:@selector(refresh tout court.
l'objet dont on "set" ainsi l'action sera alors envoyé comme argument ...
C'est la méthode refresh qui est mal déclarée et mal implémentée.
Elle doit être déclarée et implémentée comme une IBAction:
-(void ou IBAction) refresh:(id) sender;
[EDIT]Remarque, on accède à l'instance de la scrollview et donc de ses scrollers, via un outlet, donc le fait de mettre IBAction doit marcher...
Mais rien ne t'empèche dans ton code d'appeler une IBAction comme n'importe quelle méthode.
Faut juste veiller à ce que l'objet que tu transmet (self ou autre) réponde bien au méthode que l'action est susceptible du lui adresser en retour...
Si, par ex. l'IBAction refresh comporte une ligne comme
ben il faut ici que self réponde à la méthode state ...
Ou alors appeler l'action en lui transmettant comme sender, plutot que self, un objet qui y répond: