NSButton приписывает название меняет цвет при нажатии кнопки вниз - PullRequest
0 голосов
/ 16 октября 2018

Я создал приложение Какао с кнопкой на нем, имеющей стиль «Проверка» и тип «Переключение».Он установлен на пользовательский класс MyButton:

@interface MyButton : NSButton
- (void)awakeFromNib;
@end

Этот пользовательский класс устанавливает attributedTitle:

@implementation MyButton
- (void)awakeFromNib {
    [super awakeFromNib];       
    [self setAttributedTitle:[[NSAttributedString alloc] initWithString:@"Hallo" attributes:@{
    }]];
}
@end

Когда кнопка отмечена, цвет шрифта изменяется навниз.

Я прочитал, что по умолчанию NSAttributedString цвет по умолчанию черный , но когда я явно установил его на черный, он остается черным при нажатии мыши.Если я явно запрашиваю [NSColor controlTextColor], цвет переключается при нажатии мыши.Это поведение где-то задокументировано?Это предназначено или ошибка?

1 Ответ

0 голосов
/ 18 октября 2018

В вашем случае вы можете захотеть создать подкласс NSButtonCell и переопределить некоторые методы.

Один из возможных путей - переопределить метод NSCell

- (NSColor *)highlightColorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView

Это одна из многих проблем с рисованием кнопок.После попытки согнуть рисунок NSButtonCell под свои нужды, я закончил рисовать все сам.Я начал с древнего, но удивительного BGHUDAppKit и сильно изменил его, чтобы соответствовать моим потребностям.BGHUDAppKit чудовищен, но по крайней мере теперь я могу легко отлаживать или обходить большинство ошибок рисования.Я чувствую всех людей, которые сталкиваются с ошибками, похожими на эти, когда они пытаются поддерживать темный режим Мохаве.

...