大纲视图中的鼠标事件

时间:2012-06-23 11:39:40

标签: cocoa mouseevent nsoutlineview

我有一个包含拆分视图的窗口。其中一个“分裂”包含一个大纲视图。我有一个窗口控制器(窗口的XIB的文件所有者)。窗口控制器是大纲视图的委托和数据源。

当我在窗口控制器中调用-(void)mouseDown:(NSEvent *)e方法时,只有工具栏响应方法 - 大纲视图不响应。

如何获取鼠标事件,例如大纲视图的mouseDown?

1 个答案:

答案 0 :(得分:1)

获取大纲视图的鼠标事件:

  1. 对大纲视图进行子类化。
    • 在Interface Builder(IB)中>图书馆面板> “类”选项卡选择“NSOutlineView”
    • 右键单击NSOutlineView并选择“New Subclass ...”
    • 选择“生成源文件”并将文件添加到项目
    • ,完成以下弹出窗口
    • 选择NSOutlineView
    • 在Inspector Panel中> “身份标签”>类标识>班级选择新班级
  2. 实施鼠标事件方法

    • 在Xcode中>您的大纲视图的新子类>实现(.m)文件类型是你的方法,例如

      (void)mouseDown:(NSEvent *)theEvent {
          /* CODE YOU WANT EXECUTED WHEN MOUSE IS CLICKED */
          NSLog(@"Mouse down occurred");
          // call this to get the usual behaviour of your outline
          // view in addition to your custom code
          [super mouseDown:theEvent];
      }
      
  3. 知道可以使用[NSEvent modifierFlags]获取鼠标事件可能很有用。这不仅适用于大纲视图,也适用于整个应用程序中的视图。例如,在窗口控制器中(在问题中提到),我可以包含如下代码:

    if ([NSEvent modifierFlags] == NSAlternateKeyMask) { // if the option key is being pressed
                /*SOME CODE*/
    }