gpt4 book ai didi

Cocoa:右键单击 NSTableView 的单元格时如何获得上下文菜单

转载 作者:行者123 更新时间:2023-12-03 16:02:16 24 4
gpt4 key购买 nike

我有一个带有自定义单元格的 TableView。我希望当用户右键单击(或右键单击的任何其他 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 却没有。

最佳答案

无需考虑事件处理,分配上下文菜单所需要做的就是将 TableView 的 menu 导出设置为指向 NSMenu 对象您想要用于上下文菜单的。

您可以在 Interface Builder 中执行此操作,方法是将 NSMenu 对象放入 nib 文件中,然后按住 Control 键从表格 View 拖动到菜单以设置 socket 。

或者,您可以使用 NSTableView(继承自 NSResponder)的 -setMenu: 方法以编程方式分配菜单。

关于Cocoa:右键单击 NSTableView 的单元格时如何获得上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6186961/

24 4 0