3

我想自定义一个,NSPopUpButton所以我实现了一个CustomMenuItemView,现在只有以下代码(用于测试目的):

- (void)drawRect:(NSRect)dirtyRect
{
    [[NSColor redColor] set];
    NSRectFill(dirtyRect);
}

现在,对于NSMenuItem我添加到的NSMenu每个我将myPopUpButton.menu视图设置为我的自定义视图:

NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:@"Some title" action:NULL keyEquivalent:@""];
menuItem.view = [[CustomMenuItemView alloc] initWithFrame:NSMakeRect(0, 0, 100, 25)];

当我运行我的程序并打开弹出按钮时,菜单项选择似乎被禁用(即当我单击它时没有任何反应)。

我猜它实际上并没有被禁用;它只是不再响应事件。我是否需要在自定义视图中添加一些事件处理?如果是这样,怎么做?

4

1 回答 1

10

我通过将mouseUp方法添加到我的CustomMenuItemView

- (void)mouseUp:(NSEvent*) event
{
    NSMenu *menu = self.enclosingMenuItem.menu;
    [menu cancelTracking];
    [menu performActionForItemAtIndex:[menu indexOfItem:self.enclosingMenuItem]];
}
于 2012-01-17T13:05:36.390 回答