我的NStableview + cocoa上未检测到鼠标事件

时间:2009-07-31 20:48:34

标签: cocoa mouseevent nstableview

过去几天我一直在尝试这个但是无法解决这个问题。

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

现在我能够在两个视图中显示各自的内容,并且使用委托和通知完成outlineview和tableview之间的交互。

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

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

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

由于

1 个答案:

答案 0 :(得分: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");