Создание подкласса NSButton для захвата событий mouseUp и mouseDown, но с сохранением методов рисования суперкласса NSButtons.
Моя цель, как указано выше, создать подкласс NSButton и заставить его выполнять свои обычные функции суперкласса, в то же время позволяя мнепереопределить mouseDown и mouseUp и отправить его обратно в действие с NSEvent, чтобы код кнопки мог затем проверить, какой тип даже произошел, и ответить соответственно.
Когда я экспериментировал с подклассом NSButton, я заметил, что когдаВы переопределяете mouseDown, как показано ниже:
override open func mouseDown(with event: NSEvent)
{
super.mouseDown(with: event)
// call the target with left button down
_ = target?.perform(action, with: event)
}
Похоже, что super.mouseDown захватывает события мыши, и впоследствии ваш подкласс NSButton не получит соответствующее событие mouseUp.
Видя, как все работает, я просто переопределил mouseDown и mouseUp, не вызывая никаких функций Суперкласса.Это действительно обеспечивает даже для mouseDown и mouseUp.Я пересылаю событие в действие и позволяю коду действия обработать, какое событие произошло, и все в порядке.Единственное предостережение в том, что поведение по умолчанию для состояния кнопки не происходит.Кнопка останется в исходном невыбранном состоянии.Если бы я изменил состояние и принудительно обновил кнопку, можно было бы подумать, что она нарисует кнопку в выбранном состоянии.Этого не происходит, поэтому я пишу для некоторой помощи.
Я бы хотел иметь возможность рисовать по умолчанию поведение события NSButton mouseDown.Есть ли способ установить свойство NSButton или его состояние и вызвать перерисовку?Кажется, я не могу этого сделать.Если нет способа сделать это, то я буду вынужден рисовать содержимое кнопок в выбранном состоянии, как-то через переопределение метода рисования.
Любая помощь будет принята с благодарностью.