gpt4 book ai didi

cocoa - 大纲 View 中的鼠标事件

转载 作者:行者123 更新时间:2023-12-03 17:57:34 28 4
gpt4 key购买 nike

我有一个包含分割 View 的窗口。其中一个“分割”包含一个大纲 View 。我有一个窗口 Controller (它是窗口 XIB 的文件所有者)。窗口 Controller 是大纲 View 的委托(delegate)和数据源。

当我在窗口 Controller 中调用 -(void)mouseDown:(NSEvent *)e 方法时,只有工具栏响应该方法 - 大纲 View 不会响应。

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

最佳答案

获取大纲 View 的鼠标事件:

  1. 对大纲 View 进行子类化。
    • 在 Interface Builder (IB) >“库”面板 >“类”选项卡中选择 NSOutlineView
    • 右键单击 NSOutlineView 并选择“新建子类...”
    • 完成以下弹出窗口,选择“生成源文件”并将文件添加到您的项目
    • 选择 NSOutlineView
    • 在“检查器面板”>“身份”选项卡>“类身份”>“类”中选择您的新类
  2. 实现鼠标事件方法

    • 在 Xcode 中 > 大纲 View 的新子类 > 实现 (.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]获取鼠标事件可能会很有用。这不仅适用于大纲 View ,也适用于整个应用程序的 View 。例如,在窗口 Controller (问题中提到的)中,我可以包含如下代码:

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

关于cocoa - 大纲 View 中的鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11169208/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com