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

我希望在桌面视图上悬停时更改文本背景颜色,类似于当鼠标悬停标签名称时,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.

>当调用tableview awakeFromNib方法时,我从tableview的可见部分创建一个trackingRect
>我有一个BOOL ivar,当鼠标位于跟踪区域(mouseEntered)时设置为YES,当没有鼠标时设置为NO(mouseExited)
>在mouseMoved方法中,我确定鼠标光标所在的当前行并将其设置为NSInteger ivar,然后调用tableview的setNeedsdisplayInRect:传递鼠标所在行的矩形.
>我还重写resetCursorRects以删除旧的跟踪矩形并添加一个新的…当滚动tableview时调用方法,以便它跟踪最新的可见rect.
>最后在我的tableview的委托中,我确定所选行(通过从表视图的NSInteger ivar中检索行索引并更改单元格的文本颜色(或任何您想要的),如果当前绘制的单元格与鼠标光标所在的行匹配所有这些都是在委托方法中完成的:tableView:(NSTableView *)aTableView willdisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn行:(NSInteger)rowIndex

我希望这有助于其他人,因为这有点棘手.确保tableview是视图加载时的第一个响应者也很重要,这样可以使事情更简洁,更清晰.

顺便说一句,有没有办法在视图中进行特定控制总是第一个响应者,没有其他可能作为第一个响应者?甚至诸如iPhone …… viewWillAppear方法之类的方法也会有所帮助,因为每次视图可见时我都可以设置第一个响应者…但我不知道Mac上有这样的方法.

相关文章

我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Ja...
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序...
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标....
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的...
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用...
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和...