У меня есть 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 - нет.