Какао: Как получить контекстное меню при щелчке правой кнопкой мыши по ячейке NSTableView

У меня есть TableView с настраиваемыми ячейками. I хотите, чтобы контекстное меню появлялось, когда пользователь щелкает правой кнопкой мыши (или любой другой вариант щелчка правой кнопкой мыши Apple) по одной из ячеек (и знает, в какой ячейке они щелкнули).

Я попытался создать подкласс NSTableView и перезаписать этот метод:

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

Но он никогда не вызывается.

С другой стороны,

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

получает вызов. Но я не уверен, что это тот, который нам нужен.

Подробнее:

//
//  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. HiTest вызывается много раз, а menuForEvent - нет.

15
задан Nathan H 31 May 2011 в 11:42
поделиться