Cocoa: Comment avoir un menu contextuel lorsque vous faites un clic droit sur une cellule de NSTableView

J'ai un TableView avec la coutume des cellules. Je veux un menu contextuel s'affiche lorsque l'utilisateur clique-droite sur (ou tout autre Apple variantes de droite de la souris) sur l'une des cellules (et de savoir qui de la cellule qu'ils ont cliqué sur).

J'ai essayé de la sous-classe NSTableView et de remplacer cette méthode:

- (NSMenu *)menuForEvent:(NSEvent *)theEvent;

Mais il n'est jamais appelé.

D'autre part,

- (void)rightMouseDown:(NSEvent *)theEvent;

Est appelée. Mais je ne suis pas sûr que c'est celui que nous voulons.

Plus de détails:

//
// PTTableView.m
//
//
// Created by Nathan Hazout on 5/31/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import "PTTableView.h"


@implementation PTTableView

- (id)init
{
    self = [super init];
    if (self) {
        //Initialization code here.
    }

    return self;
}

- (void)rightMouseDown:(NSEvent *)theEvent { 
    NSLog(@"entered rightMouseDown");
}

- (NSMenu *)menuForEvent:(NSEvent *)theEvent {
    NSLog(@"entered menuForEvent");
    return [super menuForEvent:theEvent];
}

- (NSView *)hitTest:(NSPoint)aPoint{
    NSLog(@"entered hitTest");
    return [super hitTest:aPoint];
}

- (void)dealloc
{
    [super dealloc];
}

@end

rightMouseDown est appelée. hiTest est appelée à de nombreuses reprises. Mais menuForEvent ne le fait pas.

source d'informationauteur Nathan H