哪个NSTableView收到NSMenuItem?

时间:2014-02-18 19:47:16

标签: macos cocoa nstableview nsmenuitem

我有一个自定义的NSViewController并排有两个NSTableViews,类似于拆分视图设置,左侧tableView上的选择更改了右侧tableView的列表。在这种情况下,我不确定如何处理NSMenuItem事件。对于例如如果我按下删除按钮,我如何区分按下删除按钮时是左侧工作台视图还是右侧工作台视图?我得到的只是使用NSMenuItem作为发送者调用的delete:选择器。

1 个答案:

答案 0 :(得分:2)

首先,一些背景知识:

在Cocoa术语中,“主动”视图或控件被称为“第一响应者”。例如,当您在文本字段中输入文本时,文本字段被视为“第一响应者”,因为它是首先响应键盘输入的对象。 NSTableView还可以接收第一响应者状态(您可以使用箭头键控制所选行)。

你可以向窗口询问它的第一响应者:

// it's not necessarily a sure thing that the first responder is a TableView.
id myFirstResponder = [_parentWindow firstResponder];

if (myFirstResponder == _leftTableView) {
    // left tableview is selected
} else if (myFirstResponder == _rightTableView) {
    // right tableview is selected
}