gpt4 book ai didi

objective-c - 如何在没有用户输入的情况下使 NSMenu 定期下拉

转载 作者:行者123 更新时间:2023-12-03 17:49:20 25 4
gpt4 key购买 nike

我在窗口顶部创建了一个状态栏菜单项,如下所示:

- (void)createStatusBarItem {
_statusBar = [NSStatusBar systemStatusBar];
_statusItem = [_statusBar statusItemWithLength:NSSquareStatusItemLength];
_statusItem.image = [NSImage imageNamed:@"icon_off.png" ];
_statusItem.highlightMode = YES;
_statusItem.menu = [self createStatusBarMenu];
}

带有菜单:

- (NSMenu *)createStatusBarMenu {
NSMenu *menu = [[NSMenu alloc] init];
...
}

我现在想要定期下拉菜单,就像用户单击状态栏图标一样。这可能吗?

最佳答案

确实是这样。首先创建一个重复的 NSTimer 来重复调用一个方法并将其存储为属性(以便稍后可以使其无效等)

self.timer = [NSTimer timerWithTimeInterval: 5.0 target: self selector: @selector(displayMenu:) userInfo: nil repeats: YES];
[[NSRunLoop currentRunLoop] addTimer: self.timer forMode: NSRunLoopCommonModes];

然后在它调用的方法中,显示菜单。

[self.statusItem popUpStatusItemMenu: self.statusItem.menu];

在这种情况下,它会每 5 秒左右弹出一次。但是,由于您不知道它何时关闭,因此用户可以关闭它,然后调用计时器并在一秒钟后重新打开它。因此,您可能希望将自己设置为菜单的委托(delegate)并实现 menuWillOpen:menuDidClose:。在 menuDidClose: 中,您可能会重新设置计时器(或设置其触发日期)以重置间隔,以便从菜单上次关闭时间开始再等待 5 秒再打开菜单。您还可以创建一个计时器,如果用户没有在 menuWillOpen: 等中自行关闭菜单,则自动关闭菜单,以便菜单每 X 秒打开一次,并在 X 秒后自行关闭,如果它什么也没做(你可以为此调用 NSMenu 的 cancelTracking 。)

关于objective-c - 如何在没有用户输入的情况下使 NSMenu 定期下拉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32401569/

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