I'm trying to subclass NSCell
to draw a custom background highlight. The documentation seems to suggest that the overriding highlight:withFrame:inView:
should allow me to do this but the method is never called.
Instead, I've overridden drawInteriorWithFrame:inView:
which works fine - I can draw what I want in the cell. However, the issue is that I have to draw everything myself, losing the functionality of the type of NSCell I am extending - for example an NSTextFieldCell's ability to display text:
Custom drawn highlighted cell:
However, I just want to redraw the background (the highlight), and retain the ability to use the main functionality of the extended cell:
I could, of course, just draw the text myself too but I'm hoping there is an easier way of doing this.
Any help is much appreciated.
Thanks to the help of @Bavarious I've managed to work it out. My extended NSTextFieldCell class implementation now contains:
The key is to make sure you return
nil
forhighlightColorWithFrame:inView:
to stopdrawInteriorWithFrame:inView:
drawing a background and yet still calling it to draw the main content (in this case text).