NSTableView上的cocoa +上下文敏感菜单,选择了多行

Kin*_*ing 1 cocoa contextmenu

我在控件上显示上下文相关菜单时遇到问题当选择多行时单击桌面视图.选择单行然后单击控件时,它工作正常.我实现这个的方式如下所示:

-(void)doSingleClick  
{  
    NSLog(@"single clicked");

    if([[NSApp currentEvent] modifierFlags] & NSControlKeyMask)
    {

        NSLog(@"control clicked.......");

        [NSMenu popUpContextMenu:[self showContextMenu] withEvent:[NSApp currentEvent] forView:tableView];

        return;
    }

}
Run Code Online (Sandbox Code Playgroud)

和showContextMenu函数返回一个NSMenu对象.

我这样做是因为我的表视图出于某种奇怪的原因无法识别mouseDown或mouseUp或menuForEvent事件.

上面代码段的问题是,当选择多行并单击控件时,它无法识别控件单击并且不会进入该循环,因此不显示上下文菜单.

请建议我实现这一目标的机制.

谢谢

小智 17

我不推荐上面答案中给出的方法.相反,请查看Leopard及更高版本中的" DragNDropOutlineView "示例.这和发行说明提供了一种适当的方法来实现单行或多行的上下文菜单.这包括让AppKit自动进行正确的突出显示.

corbin dunn(NSTableView软件工程师)