Нужно использовать метод setHighlighted:, но не напрямую, а сразу после того как NSButton закончит выполнение собственного обработчика события нажатия на кнопку.
- (IBAction)buttonClick:(id)sender
{
[self performSelector:@selector(highlight:) withObject:(NSButton *)sender
afterDelay:0.01];
}
- (void)highlight:(NSButton *)aButton
{
[aButton.cell setHighlighted:YES];
}
Демонстрация:
Но тут может быть такой эффект, что если нажать на кнопку и не отпуская левую клавишу мыши отвести курсор мыши в сторону, то подсветка с кнопки снимается и она принимает обычный вид. Частично это можно исправить, если перекрыть метод mouseDown: в подклассе NSButton:
- (void)mouseDown:(NSEvent *)anEvent
{
// NSLog(@"mouse down!");
[super mouseDown:anEvent];
// NSLog(@"mouse up!");
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.01 * NSEC_PER_SEC)
, dispatch_get_main_queue(), ^{
[self.cell setHighlighted:YES];
});
}
См. также:
