Вопрос

Я пытаюсь подкласс генеракодицетагкод, чтобы нарисовать пользовательскую предпосылку. Документация, по-видимому, предполагает, что переопределенный генеракодицетагкод должен позволить мне сделать это, но метод никогда не вызывается. Вместо этого я переопределил 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).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top