1

我创建了一个自定义的 NSCell 子类,其中包含一个 NSImageCell、一些 NSTextFieldCells 和一个 NSPopUpButtonCell。

我正在使用以下方法初始化弹出单元格:

    myPopUpCell = [[NSPopUpButtonCell alloc] init];
    [myPopUpCell setBordered:NO];
    [myPopUpCell setAutoenablesItems:NO];
    [myPopUpCell addItemsWithTitles:[NSArray arrayWithObjects:@"Item1", @"Item2", @"Item3"]];

并把它画进去drawInteriorWithFrame:inView:

一切似乎都很好,除了在运行我的应用程序时单击弹出单元格时,单元格不会弹出。关于可能出错的任何建议?

4

1 回答 1

5

绘制弹出按钮单元格drawInteriorWithFrame:inView:就是这样做的;画它,但没有别的。处理点击事件与绘图无关,因此您必须在自定义单元格中做一些工作来解释鼠标事件,如果它们在您用于弹出按钮的框架内,请将它们传递给到纽扣电池。从跟踪鼠标下的 NSCell 文档中列出的方法开始子类化,例如–trackMouse:inRect:ofView:untilMouseUp:,您应该能够弄清楚使纽扣电池正确动作所需的方法。

根据您正在做的事情,您实际上可能会发现自己绘制标题字符串更容易,并且只需使用 NSMenu 的+popUpContextMenu:withEvent:forView:.

于 2009-05-29T22:22:01.280 回答