NSTableView 的 NSCell 中的鼠标悬停检测?

2024-01-02

我想在将鼠标悬停在表格视图单元格上时更改其文本背景颜色,类似于当您将鼠标悬停在标签名称上时,AddressBook 如何“突出显示”联系人元素的标签。但是我不知道如何实现......

检测特定 NSCell 上的鼠标悬停并且... 检测到他悬停的单元格后,突出显示该单元格中的文本(不像用户选择该行那样突出显示整行)

由于 NSCell 不是 NSView 的子类,这似乎是一项非常困难的任务。

任何有关此操作的示例或有关如何完成此操作的解释将不胜感激。

Thanks!


I actually got it working using another method. I got it from the example posted here... http://www.cocoadev.com/index.pl?NSTableViewRollover http://www.cocoadev.com/index.pl?NSTableViewRollover https://web.archive.org/web/20111013060111/http://cocoadev.com/index.pl?NSTableViewRollover https://web.archive.org/web/20111013060111/http://cocoadev.com/index.pl?NSTableViewRollover

我没有使用 NSCell 的跟踪机制,而是在子类 NSTableView 中跟踪 mouseEntered/mouseExited 和 mouseMoved。

  1. 当调用 tableview awakeFromNib 方法时,我从 tableview 的可见部分创建一个跟踪矩形

  2. 我有一个 BOOL ivar,当鼠标位于跟踪区域内时(mouseEntered)设置为 YES,不在跟踪区域时设置为 NO(mouseExited)

  3. 在 mouseMoved 方法中,我确定鼠标光标所在的当前行并将其设置为 NSInteger ivar,然后调用 tableview 的 setNeedsDisplayInRect: 传递鼠标所在行的矩形。

  4. 我还重写了resetCursorRects以删除旧的跟踪矩形并添加一个新的...当滚动tableview时调用此方法,以便它跟踪最新的可见矩形。

  5. 最后,在我的表视图的委托中,我确定选定的行(通过从表视图的 NSInteger ivar 检索行索引,如果当前绘制的单元格与鼠标光标所在的行匹配,则更改单元格的文本颜色(或任何您想要的颜色)这一切都是在委托方法中完成的:tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex

我希望这对其他人有帮助,因为这有点棘手。确保 tableview 是视图加载时的第一个响应者也可能很重要,这只会让事情变得更加精简和干净。

顺便说一句,有没有办法使视图中的特定控件始终成为第一个响应者,而没有其他可能作为第一个响应者?即使像 iPhone 这样的方法... viewWillAppear 方法也会有所帮助,因为我可以在每次视图可见时设置第一响应者...但我不知道 Mac 上有这样的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSTableView 的 NSCell 中的鼠标悬停检测? 的相关文章

随机推荐

  • 如何使用 Delphi 获取与文件扩展名关联的程序名称?

    我需要获取当前与当前用户的文件扩展名关联的程序的名称 如果右键单击文件并选择属性 那么我需要的是 打开方式 行右侧的程序名称 例如对于 xls 我希望能够获得答案 Microsoft Office Excel 或者用户作为默认程序打开 xl
  • 从 Java 应用程序在 Chrome 控制台中执行 JavaScript 命令

    我想创建一个简单的应用程序 它将在特定页面上的 Chrome 控制台中执行 JavaScript 命令并返回输出 也就是说 我想从当前页面获取所有可访问的链接 我可以通过在 Chrome 控制台中运行以下命令来完成此操作 urls a fo
  • WordPress 中哪些列存储 slug

    在 WordPress 中 哪一列存储 slug 自动生成的或用户输入的 我在其中都找不到这个wp posts or wp postmeta The wp posts GUID存储直接链接 但不存储 slug 帖子和页面的 slug 存储在
  • 核心图像:使用 CICrop 后,应用合成滤镜无法对齐

    我正在使用 CICrop 通过剪切图像的顶部和底部来将图像裁剪为特定尺寸 之后 我应用 CIMultiplyCompositing 过滤器之类的东西 将裁剪后的图像与另一个图像组合起来 两张图片大小相同 但结果显示两张图片没有对齐 其中一张
  • VBA - 在“IF 语句”内嵌套“With 语句”

    语言 VBA MS Access 我在代码中使用用户定义类型 UDT 我希望能够根据状态变量确定我正在将数据加载到 UDT 的哪个部分 我的第一次尝试是使用嵌套在 IF 语句中的 With 语句 这不起作用 我收到一个编译器错误 显示 El
  • 不明白二叉树最大路径和问题的解法

    GeeksforGeeks 网站已推出一个办法 https www geeksforgeeks org find maximum path sum in a binary tree 对于二叉树的最大路径和问题 问题如下 给定一棵二叉树 找到
  • 有条件的 Django 中间件(或如何排除管理系统)

    我想使用我在整个网站上编写的一些中间件 大量页面 因此我选择不使用装饰器 因为我想对所有页面使用代码 唯一的问题是我不想将中间件用于管理代码 并且它似乎对它们很活跃 有什么方法可以配置 settings py 或 urls py 或者代码中
  • 为什么 FormControl#valueChanges 的订阅没有被垃圾收集?

    我浏览过很多帖子说需要取消订阅FormControl valueChanges以防止内存泄漏 我了解取消订阅的 何时 和 如何 Observables 据我了解 产生的 Observablesinfinite需要取消订阅的值的数量以及For
  • 检查 SQL Server 服务器可用性的最快方法是什么?

    我有一个在多个位置使用的 MS Access 程序 它连接到 MS SQL Server 表 但每个位置的服务器名称都不同 我正在寻找最快的方法来测试服务器是否存在 我当前使用的代码如下所示 ShellWait sc ServerName
  • 将 PivotItemHeader 样式应用于 UWP 中的 PivotItem

    我已经创建了一个 PivotItemHeader 样式 其中包含资源中的键 但不知道在哪里应用它 尽管如果我删除 Key 它将应用于所有 PivotItemHeader 但我不想这样做 我只想将此应用到选择枢轴
  • 如何从代码中更改宽高比约束值?

    我在 xib 中为 imageView 指定了 1 2 的长宽比约束 我已经为约束创建了一个 IBOutlet 现在我需要根据某些条件将纵横比更改为 1 1 我想知道除了删除旧约束并放入新约束之外 是否有任何方法可以更改约束的乘数值 我认为
  • iOS 9.x 中嵌入式 Facebook 浏览器的视口/页面高度错误

    当打开demo https mtr github io core layout examples 申请来自核心布局 https www npmjs com package core layout使用 iOS 9 x 至少 上 Faceboo
  • 在 Google 表格的 Google 脚本中的特定表格上使用 onedit() 触发器

    我需要运行由 onedit 触发的脚本 仅对其中的一张进行处理 我已经尝试过以下操作 但目前我无法让脚本仅在所需的工作表 库存 上工作我确信这对于知道的人来说会非常简单 function onEdit e var range e range
  • jQuery 日期选择器,其中文本输入是只读的

    我想使用 Jquery 日期选择器 我已经使用 alt 字段选项进行了设置 我在文本字段中显示 D M Y 但提交 Y M D 到目前为止一切正常 发送正确的数据等 但是我想阻止用户手动输入日期 我最初将 INPUT 字段设置为禁用 该字段
  • 为 QStringListModel 项设置自定义数据

    我有 QStringListModel QStringListModel blocksModel new QStringListModel 以及一个继承自QObject的类 class Block public QObject Q OBJE
  • Flutter Android Studio 调试器跳过框架文件

    是否可以配置 Android Studio Debugger 来跳过 flutter 框架文件和包文件 我对 Step Over 或 Step out 不感兴趣 因为例如在调用调度之后使用 redux 我想逐步跳过直到我编写的减速器 而不遵
  • django-haystack 和 Solr 的拼写建议

    我收到的拼写建议为 无 首先 我在 settings py 文件中设置了这个 HAYSTACK INCLUDE SPELLING True 我已经重建了索引 python manage py rebuild index 并对其进行了良好的更
  • 为什么 Git 子树总是处理每个提交?

    我在用Git 子树 https github com git git blob master contrib subtree git subtree txt在项目之间共享我的源代码的子文件夹 这工作正常 但每次我执行 git 子树推送时 终
  • 在 MATLAB 标记发布中使用 Latex 包

    我使用的是 Mac OSX 10 10 5 和 MATLAB 2015b 现在花了几个小时尝试遵循各种 google 搜索的说明 了解如何导入 LaTeX 包并在其中使用它们MATLAB 的标记 http uk mathworks com
  • NSTableView 的 NSCell 中的鼠标悬停检测?

    我想在将鼠标悬停在表格视图单元格上时更改其文本背景颜色 类似于当您将鼠标悬停在标签名称上时 AddressBook 如何 突出显示 联系人元素的标签 但是我不知道如何实现 检测特定 NSCell 上的鼠标悬停并且 检测到他悬停的单元格后 突