Mouse-tracking (NSCell)
Bonjour,
Je tente désespérément d'intercepter les events souris sur un NSPathCell... Voulant un peu faire évoluer son fonctionnement, j'ai overridé les méthodes suivantes comme l'indique la doc :
Mais rien n'y fait !
En revanche, j'arrive à récupérer l'event suivant :
Mais ça ne me suffit pas à savoir si la souris est relâchée, ou si elle sort de la zone, etc...
Je tente désespérément d'intercepter les events souris sur un NSPathCell... Voulant un peu faire évoluer son fonctionnement, j'ai overridé les méthodes suivantes comme l'indique la doc :
If you want to implement your own mouse-tracking or mouse-up behavior, consider overriding startTrackingAt:inView:, continueTracking:at:inView:, and stopTracking:at:inView:mouseIsUp:
<br />- (BOOL)startTrackingAt:(NSPoint)startPoint inView:(NSView *)controlView<br />{<br /> NSLog(@"Start");<br /> return [super startTrackingAt:startPoint inView:controlView];<br />}<br /><br />- (BOOL)continueTracking:(NSPoint)lastPoint at:(NSPoint)currentPoint inView:(NSView *)controlView<br />{<br /> NSLog(@"Continue");<br /> <br /> return [super continueTracking:lastPoint at:currentPoint inView:controlView];<br />}<br /><br />- (void)stopTracking:(NSPoint)lastPoint at:(NSPoint)stopPoint inView:(NSView *)controlView mouseIsUp:(BOOL)flag<br />{<br /> NSLog(@"Stop");<br /> [super stopTracking:lastPoint at:stopPoint inView:controlView mouseIsUp:flag];<br />}<br /><br />
Mais rien n'y fait !
En revanche, j'arrive à récupérer l'event suivant :
<br />- (BOOL)trackMouse:(NSEvent *)theEvent inRect:(NSRect)cellFrame ofView:(NSView *)controlView untilMouseUp:(BOOL)untilMouseUp<br />
Mais ça ne me suffit pas à savoir si la souris est relâchée, ou si elle sort de la zone, etc...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Sur une custom view, j'ai utilisé la méthode , trackRect étant une variable d'instance.
Une fois avoir dit que la vue accepte le firstResponder, et bien les méthodes mouseEntered: et mouseExited: sont appelées automatiquement. En les souclassant on a donc l'info.
Peut-être que je réponds à coté ?
Je parle de NSCell. Je customize en fait un NSPathControl. On va donc éviter de réinventer la roue (cà d sous-classer directement NSPathControl ou faire une vue carrément à part). Je sous-classe pour l'instant NSPathCell et NSPathComponentCell.
Pour l'instant je reste totalement dans le floue. Google ne m'a aidé que dans le cas où une personne avait overridé une cell contenue dans une outlineview. il fallait dans ce cas là utiliser : - (BOOL)outlineView:(NSOutlineView *)outlineView shouldTrackCell:(NSCell *)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item