J'ai totalement personnalisé NSControl
avec son entièrement personnalisé NSCell
. Maintenant, je veux implémenter une interaction avec la souris. Par exemple lorsque l'utilisateur clique sur le contrôle Je veux changer l'état du contrôle à highlight
donc les questions sont:NSControl et NSCell: Gérer l'état de la cellule dans le bon sens
1) Où dois-je faire face à l'événement de la souris? Dans le NSControl
ou directement dans le NSCell
?
Au moment, je travaille avec ce code dans la sous-classe NSCell:
-(BOOL)startTrackingAt:(NSPoint)startPoint inView:(NSView *)controlView{
[self setHighlighted:YES];
return YES;
}
-(void)stopTracking:(NSPoint)lastPoint at:(NSPoint)stopPoint inView:(NSView *)controlView mouseIsUp:(BOOL)flag{
[self setHighlighted:NO];
}
2) est l'état NSCell
géré automatiquement par le NSControl
? Si je mets le NSControl
stete à highlight
il sera reflété au NSCell
?
3) et qu'en est-il des attributs activés? En ce moment j'écrit ce code dans le NSControl: Et ce code dans le NSControl
-(void)setEnabled:(BOOL)flag{
[super setEnabled:flag];
[[self cell]setEnabled:flag];
[self updateCell:[self cell]];
}
Avez-vous suggéré notamment de travailler avec l'événement de la souris avec une coutume NSControl + NSCell?
Pourquoi dois-je modifier la zone de suivi? – MatterGoal
Vous n'avez pas à le modifier du tout. C'est juste une approche propre, parce que votre sous-classe NSControl détecte tout seul lorsque la souris entre/sort et donc il peut agir sur elle. –
J'ai besoin de simuler un comportement NSButton donc je n'ai pas besoin de savoir quand la souris entre/quitte mon contrôle. J'ai juste besoin de savoir quelle est la bonne façon de gérer l'événement de la souris sur un contrôle personnalisé. En ce moment j'essaie de le gérer au niveau NSCell. Pensez-vous que ce n'est pas une bonne idée? – MatterGoal