gpt4 book ai didi

objective-c - NSStatusBarButton 保持高亮

转载 作者:太空狗 更新时间:2023-10-30 03:23:16 24 4
gpt4 key购买 nike

从 OS X 10.10 开始,大部分 NSStatusItem 已被弃用,取而代之的是 button 属性,它由一个 NSStatusBarButton 组成。它应该像普通按钮一样工作,但不幸的是,NSStatusButton 中的 cellsetCell 方法也已被弃用。因此,我正在努力寻找一种方法来使按钮在单击后保持突出显示(通常按钮在鼠标按下时突出显示,而在鼠标抬起时不突出显示。我想在鼠标抬起后保持突出显示)。

在其操作中调用 [NSStatusButton setHighlighted:] 不起作用,因为一旦鼠标抬起,它似乎就会取消突出显示。另一方面,使用延迟在下一个循环中调用它,即 [self performSelector: withDelay:] 会导致突出显示以一种相当难看的方式闪烁。它有效,但看起来不太好。

将按钮类型设置为 NSToggleButton 会完全移除突出显示,而是突出显示奇怪的模板图像。

这些是我唯一能想到的方法。无论如何要覆盖这个 NSButtonCell mouseUp 行为?

最佳答案

这是另一种选择。不要设置 NSStatusItemaction 属性。而是添加一个本地事件监视器:

[NSEvent addLocalMonitorForEventsMatchingMask:(NSLeftMouseDown | NSRightMouseDown)
handler:^NSEvent *(NSEvent *event) {
if (event.window == self.statusItem.button.window) {
[self itemClicked];
return nil;
}
return event;
}];

然后在 -itemClicked 中使用 highlight: 方法突出显示按钮:

- (void)itemClicked {
[self.statusItem.button highlight:YES];
// Do other stuff
}

要取消突出显示,只需在需要的地方调用按钮的 highlight:NO

关于objective-c - NSStatusBarButton 保持高亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26004684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com