As of OS X 10.10 most of NSStatusItem has been deprecated in favour of the
[self performSelector: withDelay:]
I added a subview to the status item, and inside that view I added event handlers for mouseDown etc. which called [[statusItem button] highlight:true]. As it turns out setHighlighted: doesn't do the same thing as highlight:.
NSArray *array = [NSArray arrayWithObjects:[statusItem button], [self statusItemView], nil]; [[[statusItem button] superview] setSubviews:array]; //Highlight like so: [[statusItem button] highlight:true];
EDIT: As of El Capitan this method no longer works, and neither does
statusItem.button.highlight = true either