gpt4 book ai didi

cocoa - NSMenu 中的替代菜单项

转载 作者:行者123 更新时间:2023-12-03 16:07:40 24 4
gpt4 key购买 nike

我有一个 NSMenu,其中包含带有自定义 View 的 NSMenuItems。我希望这样当按下 alt 按钮时,菜单项会改变其部分外观(通过其 View )。我在 NSMenuItem 文档中找到了 setAlternative,但是,实际上,我只能让它在没有自定义 View 的情况下与 NSMenuItems 一起使用。一旦我设置了自定义 View ,所有菜单项都会显示。另外,我尝试在菜单打开时获取按键事件。由于另一个运行循环,NSApplication 的 sendEvent: 在菜单关闭之前不会接收事件。因此,我不能仅仅拦截传入的事件。

有谁知道如何在打开菜单时按下 alt 键时收到通知(无论是通过委托(delegate)还是子类化)?

最佳答案

您应该设置一个对象作为菜单的委托(delegate),然后实现委托(delegate)方法 -menu:updateItem:atIndex:shouldCancel: .

这将允许您在显示菜单项之前根据当前修改器状态更改自定义 View 的状态。

您可以通过询问 [[NSApp currentEvent] modifierFlags] 来获取当前修饰符。 .

如果您需要在菜单打开时修改器标志发生更改时收到通知,请实现 -flagsChanged:自定义 View 中的方法:

- (void)flagsChanged:(NSEvent*)event
{
if ([event modifierFlags] & NSAlternateKeyMask) // check for option key
{
//do something
}
else
{
//do something else
}
}

关于cocoa - NSMenu 中的替代菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2606599/

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