0

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

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

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

4

1 回答 1

1

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

  1. 子类化大纲视图。
    • 在 Interface Builder (IB) > Library 面板 > Classes 选项卡中选择 NSOutlineView
    • 右键单击 NSOutlineView 并选择“新建子类...”
    • 完成以下弹出窗口选择“生成源文件”并将文件添加到您的项目中
    • 选择 NSOutlineView
    • 在 Inspector Panel > Identity 选项卡 > Class Identity > Class 中选择您的新班级
  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];
      }
      

知道可以通过使用[NSEvent modifierFlags]. 这不仅适用于大纲视图,也适用于整个应用程序的视图。例如,在窗口控制器(在问题中提到)中,我可以包含如下代码:

if ([NSEvent modifierFlags] == NSAlternateKeyMask) { // if the option key is being pressed
            /*SOME CODE*/
}
于 2012-06-26T09:33:19.667 回答