2

单击按钮时,我正在显示一个弹出菜单。问题是,当该菜单打开时,计时器不再工作:

要显示菜单:

[_menu popUpMenuPositioningItem:nil atLocation:point inView:nil];

单击按钮后,我的计时器(在弹出窗口之前调用)不再发送消息。

[NSTimer scheduledTimerWithTimeInterval:0.50
                                 target:self
                               selector:@selector(myMethod:)
                               userInfo:nil
                                repeats:YES];

还尝试过 [NSEvent addGlobalMonitorForEventsMatchingMask..] 甚至 CGEventTapCreate。什么都没有被调用。

如何使弹出窗口不阻塞/模态?我知道这是可能的,我已经看到另一个应用程序做到了。感谢您的任何想法。

4

1 回答 1

2

问题可能是 NSTimer 没有在正确的模式下运行。尝试通过创建一个 NSRunLoop 对象来获取当前的运行循环。然后使用方法 addTimer:forMode: (在您刚刚创建的运行循环对象中)将您的计时器添加到 NSModalPanelRunLoopMode。您可以在此处的 Apple Docs 中阅读有关它的更多信息:https ://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSRunLoop_Class/Reference/Reference.html

于 2013-03-05T21:03:40.403 回答