我有一个QT应用程序,我在OSX上使用本机菜单。我有自定义绘制的菜单项,我通过将我自己的NSView派生类附加到我想特别绘制的NSMenuItems创建。这一切都很好;菜单项正确绘制并正确启动菜单功能。但是,在激活菜单功能后,菜单不会消失 - 它仍在跟踪鼠标移动。 (游标仍然会突出显示项目)我花了数天的时间寻找答案,在其他地方我还没有看到类似的问题。我的NSView类很简单;我已经覆盖了“矩形”类绘画,我mouseUp事件是在这里:NSMenu cancelTracking有时不会取消跟踪
-(void)mouseUp:(NSEvent *)theEvent
{
NSMenuItem* item = [self enclosingMenuItem];
if (item != nil){
NSMenu *menu = [item menu];
if (menu != nil){
[menu cancelTracking];
[NSApp sendAction:[item action] to:[item target] from:item];
}
}
}
我也使用“cancelTrackingWithoutAnimation”试过了,我已经打过电话父菜单栏cancelTracking。任何人都可以告诉我什么情况下“cancelTracking”可能会失败?我不确定接下来要尝试什么。谢谢。