Довольно старая нить. Но это проблема, с которой я столкнулся в последнее время, поэтому, если мне позволят внести свой вклад ...
В моем случае использование NSPopupButton было невозможным. Потому что NSPopupButton создает свой собственный NSMenu, который мне не нужен (и я не знаю, как заставить его исчезнуть).
И я нашел другой путь. Существует возможность изменить поведение NSButton по умолчанию без его наследования. Просто используйте -sendActionOn:
метод класса NSControl (где-то в -awakeFromNib
):
[_myButton sendActionOn:NSEventMaskLeftMouseDown];
Теперь действие от кнопки отправляется на событие mouseDown.
Надеюсь, это поможет.