Вопрос
Я пытаюсь подкласс генеракодицетагкод, чтобы нарисовать пользовательскую предпосылку. Документация, по-видимому, предполагает, что переопределенный генеракодицетагкод должен позволить мне сделать это, но метод никогда не вызывается.
Вместо этого я переопределил NSCell
, который работает нормально - я могу нарисовать то, что хочу в клетке. Тем не менее, проблема в том, что я должен сделать все сам, потерять функциональность типа Nscell, которую я простираюсь - например способность NStextFieldCell для отображения текста:
Пользовательская выделенная выделенная ячейка:
Однако я просто хочу перерисовать фон (выделение) и сохранить возможность использовать основную функциональность расширенной клетки:
Я мог, конечно, просто нарисуйте текст сам тоже, но я надеюсь, что есть более простой способ сделать это.
Любая помощь очень ценится.
Решение
Thanks to the help of @Bavarious I've managed to work it out. My extended NSTextFieldCell class implementation now contains:
-(NSColor *)highlightColorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
return nil;
}
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
if ([self isHighlighted]) {
// Draw highlight background here
}
[super drawInteriorWithFrame:cellFrame inView:controlView];
}
The key is to make sure you return nil
for highlightColorWithFrame:inView:
to stop drawInteriorWithFrame:inView:
drawing a background and yet still calling it to draw the main content (in this case text).