检测特定NSCell上的鼠标悬停和……
在检测到他徘徊的单元格后,突出显示该单元格中的文本(不突出显示整行,就像用户选择该行一样)
由于NSCell不是NSVIEw的子类,因此这似乎是一项非常困难的任务.
任何关于如何做到这一点或解释的例子将不胜感激.
谢谢!
解决方法 我实际上使用另一种方法工作.我从这里发布的例子中得到了它… http://www.cocoadev.com/index.pl?NSTableViewRolloverhttps://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上有这样的方法.
总结以上是内存溢出为你收集整理的objective-c – NSTableView的NSCell中的鼠标悬停检测?全部内容,希望文章能够帮你解决objective-c – NSTableView的NSCell中的鼠标悬停检测?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)