过去几天我一直在尝试这个但是无法解决这个问题。
我有一个具有NSOutlineView和NSTableView的应用程序。 Outlineview接受输入路径并以树结构的形式显示它们的子内容。因此,当用户点击外部视图中的特定文件夹时,该文件夹的内容应显示在表视图中,其属性以列表的形式显示。
现在我能够在两个视图中显示各自的内容,并且使用委托和通知完成outlineview和tableview之间的交互。
现在我的问题是我希望在两个视图中检测到鼠标事件,这样我就可以通过单击选择,双击以启用打开文件/文件夹并控制+单击来使我的应用程序更具交互性启用上下文弹出菜单。但奇怪的是没有检测到鼠标事件。
我的应用程序设计非常简单,每个表和大纲视图都有自己的视图和控制器类,并使用通知在它们之间进行交互。请你们能告诉我哪里出错了?
我知道我可以单击并双击使用表视图的setAction和DoubleAction方法,但我无法让控件点击工作。我想知道我的应用程序设计有什么问题,因为我的观点是检测鼠标事件:(
由于
答案 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");