我已经将NSTextFieldCell(在NSTableView内)子类化为在选择单元格(即行)时绘制自定义前景色(例如,高亮显示为真)并且一切正常.
问题是当表视图失去焦点我想用不同的颜色绘制选定的行时,如何确定包含单元格的表视图是否不是drawWithFrame中的第一个响应者:(NSRect)cellFrame inView:(NSView*)controlView?
我目前的代码是
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView*)controlView {
NSColor* textColor = [self isHighlighted]
? [NSColor alternateSelectedControlTextColor]
: [NSColor darkGrayColor];
}
Run Code Online (Sandbox Code Playgroud)
我发现的最好的方法是不会让你处理响应者(因为有时候controlView的超级视图是响应者或者一些废话)是使用编辑器:
BOOL isEditing = [(NSTextField *)[self controlView] currentEditor] != nil;
Run Code Online (Sandbox Code Playgroud)
很容易!