Я хочу создать пользовательский переключатель для своего приложения, в котором я предоставляю три изображения для возможных состояний (вкл, выкл, mousedown). Весь внешний вид содержится на изображениях, поэтому я не хочу, чтобы Cocoa выделяла (затемняла) кнопку сама во время mousedown.
В данный момент я создал подкласс NSButtonCell, перетащил кнопку скоса NSButtonTypeMomentaryChange в свое представление и настроил тип класса ячейки кнопки для моего подкласса. Подкласс просто реализует awakeFromNib, чтобы попытаться установить желаемое поведение:
- (void)awakeFromNib
{
[self setShowsStateBy:NSContentsCellMask];
[self setHighlightsBy:NSContentsCellMask];
}
, который я думал (в соответствии с документацией) отключил бы затемнение кнопки mousedown. Это не так.
Я стою здесь, и теперь у меня есть два вопроса:
- Как настроить класс ButtonCell таким образом, чтобы он отображал мою готовую картинку в mousedown и не затемнял / не рисовал границы вокруг кнопки?
- Каким был бы самый чистый / наиболее подходящий способ реализовать другое поведение переключателя, то есть показать положение включения / выключения в зависимости от предыдущего состояния и иметь возможность правильно сообщать свое состояние другим объектам?