2014-02-18 35 views
0

我有一个自定义的NSViewController与两个NSTableViews并排,就像一个拆分视图设置,其中左侧tableView的选择更改右侧tableView的列表。我不知道在这种情况下如何处理NSMenuItem事件。对于例如如果我按下删除按钮,如何区分按下删除按钮时突出显示的左侧桌面视图还是右侧桌面视图?我所得到的是使用NSMenuItem作为发件人调用的delete:选择器。哪个NSTableView收到NSMenuItem?

回答

1

首先,一些背景:

在可可术语中,“活动的”视图或控制被称为“第一反应者”。例如,当您将文本输入到文本字段中时,文本字段被认为是“第一响应者”,因为它是首先响应键盘输入的对象。 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 
}