cocoa - NSMenuItem 没有调用 ValidateMenuItem

标签 cocoa nsmenuitem nsmenu

这是我的示例类和用法:

@interface CCocoaMenuItem : NSMenuItem 
{
   someClass *someobj;
}

 - (void)menuEventHandler:(id)target;
- (void)setEnableItem:(BOOL)nEnabled;

@end

@implementation CCocoaMenuItem

- (BOOL)validateMenuItem:(NSMenuItem *)item {
    // return YES or NO based on some conditions;
// But this method is not getting called


}

@end
 CCocoaMenuItem *dummyItem = [[CCocoaMenuItem allocWithZone:[NSMenu menuZone]] initWithTitle:(NSString*)aStr action:nil keyEquivalent:@""] autorelease];
[dummyItem setAction:@selector(menuEventHandler:)];
[dummyItem setTarget:dummyItem];

这里 validateMenuItem 没有被调用。我已经设定了行动和目标。目标是此类对象本身,我仅在此类中定义了 validatemenuItem。

我在这里缺少什么吗?

最佳答案

在您发布的代码中,CCocoaMenuItem 仅在 @interface 中声明了 menuEventHandler: 方法,但并未实际实现它。如果菜单项的目标不响应您设置为操作的选择器,则不会验证菜单项(此类菜单项会自动禁用)。

顺便说一句,menuZone 适用于 NSMenu,而不是 NSMenuItem

关于cocoa - NSMenuItem 没有调用 ValidateMenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16444506/

相关文章:

cocoa - 删除运行时添加的按钮

objective-c - 制作自定义 NSMenuItem View 时如何反转 NSImageNameMenuOnStateTemplate 图像?

cocoa : Hide items in dock menu

cocoa - Cocoa (Mac) 中的 HitTest 文本?

objective-c - 文档表不响应键盘事件

objective-c - 如何识别/标记 OS X 应用程序实例

swift - 如何处理 Cocoa 菜单栏应用程序中的修改键

cocoa - 在 StatusBar 中重建 NSMenuItems

macos - 我可以删除自定义 NSMenu 的顶部和底部填充吗?