gpt4 book ai didi

objective-c - NSTableView 的 NSCell 中的鼠标悬停检测?

转载 作者:太空狗 更新时间:2023-10-30 03:31:47 24 4
gpt4 key购买 nike

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

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

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

我们将不胜感激任何这方面的例子或关于如何做到这一点的解释。

谢谢!

最佳答案

我实际上是用另一种方法让它工作的。我从这里发布的示例中得到它... http://www.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 的可见部分创建一个 trackingRect

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

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

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

  5. 最后,在我的 TableView 的委托(delegate)中,我确定了选定的行(通过从 TableView 的 NSInteger ivar 中检索行索引,如果当前绘制的单元格与鼠标光标所在的行。所有这些都在委托(delegate)方法中完成:tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex

我希望这对其他人有帮助,因为这有点棘手。确保 tableview 在加载 View 时是 firstResponder 可能也很重要,这只会让事情变得更加精简和清晰。

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

关于objective-c - NSTableView 的 NSCell 中的鼠标悬停检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2786751/

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