2009-04-29 79 views
0

我有一个NSCell子类,可以进行各种自定义绘图。只有当右键单击某个单元以显示相关联的上下文菜单时,情况才会完全不受我控制。当显示它的上下文菜单时,表格(或单元格 - 不确定究竟是在做什么)绘制焦点矩形。我想摆脱这一点,或者至少找到一种方法来绘制我自己的版本,更好地适合我的界面。摆脱NSCell上的焦点。只有右击才会出现

我都试过,看起来他们可以给我控制这个焦点矩形画本身大约15种不同的方法(各种第一响应者的方法,不同的绘图方法,各种高亮颜色方法等),但我还没有找到改变它的任何事情。

截图的问题:http://twitpic.com/3zx2t

我几乎恼火足以类突降了AppKit,并设法找到它的使用作出这样的恼人的焦点矩形任何私有方法。我没有做任何事情对它有任何影响。这里的任何帮助都能真正挽救我的理智和未来的头发。

非常感谢!

回答

2

没有完全覆盖你的表视图的-drawRect:这是我知道摆脱上下文菜单高亮度矩形的唯一方式。

- (void)_drawContextMenuHighlightForIndexes:(NSIndexSet *)rowIndexes clipRect:(NSRect)rect { 
    return; 
} 

这是至少在Leopard中使用的方法,用于在将通过上下文菜单激活的单元格中绘制高亮。不幸的是,它直接被NSTableView-drawRect:方法直接调用,据我所知,没有其他方式可以表示你对绘制这些亮点不感兴趣。

当然这是私人API,它可能会停止在Snow Leopard或其他版本中工作。但最糟糕的是,这意味着在某个程序中,上下文菜单高亮可能会在您的程序中再次启动,而使用此方法的某些其他功能稍后可能无法使用。 你已被警告。

0

在10.5及更高版本,NSTableView的允许你打开任何项目的上下文菜单中的表(即,无需改变选择的副作用。)

它借鉴的是“焦点矩形”以指示上下文菜单正在对哪个项目进行操作。

+0

我明白了 - 现在我该如何删除/控制它的绘图? – 2009-04-30 18:29:34

相关问题