0

过去几天我一直在尝试这个,但无法弄清楚。

我有一个具有 NSOutlineView 和 NSTableView 的应用程序。Outlineview 接受输入路径并以树结构的形式显示它们的子内容。因此,当用户在大纲视图中单击特定文件夹时,该文件夹的内容应显示在表格视图中,其属性以列表的形式显示。

现在我可以在两个视图中显示各自的内容,并且大纲视图和表格视图之间的交互是使用委托和通知完成的。

现在我的问题是我希望在两个视图中都检测到鼠标事件,以便我可以通过启用单击来选择、双击以启用打开文件/文件夹和控制+单击以启用上下文来使我的应用程序更具交互性弹出菜单。但奇怪的是没有检测到鼠标事件。

我的应用程序设计非常简单,每个表格和大纲视图都有自己的视图和控制器类,并且它们之间使用通知进行交互。请你们能建议我哪里出错了吗?

我知道我可以单击和双击使用表格视图的 setAction 和 DoubleAction 方法工作,但我无法控制单击工作。我想知道我的应用程序设计有什么问题,因为我的视图没有检测到鼠标事件:(

谢谢

4

1 回答 1

0

您可以通过以下方式获取 Control 是否被按下:

if([[NSApp currentEvent] modifierFlags] & NSControlKeyMask){
    //control was pressed at the time the event was posted
}

或者您可能希望继承 NSTableView/NSOutlineView 并覆盖 mouseDown: 以直接获取事件。

此外,如果您的操作和 doubleAction 不起作用,请使用以下内容验证目标/操作是否正确:

NSAssert([[theView target] respondsToSelector:[theView doubleAction]], @"target/action is wrong");
于 2009-08-01T07:21:20.790 回答