Objective c 单击按钮时如何使其显示菜单?

Objective c 单击按钮时如何使其显示菜单?,objective-c,cocoa,Objective C,Cocoa,我正在寻找一些代码,使菜单出现在按钮旁边,当它被点击。 我需要什么代码 抱歉,这听起来有点模糊。为什么不使用NSPoupButton?为什么不使用NSPoupButton?如果您确实需要自己滚动此按钮,而不是使用显示菜单的内置控件之一,您可以创建一个NSPoupButtonCell并使用它来显示NSMenu: NSPopUpButtonCell *popupCell = [[NSPopUpButtonCell alloc] initTextCell:@"" pullsDown:YES]; [po

我正在寻找一些代码,使菜单出现在按钮旁边,当它被点击。 我需要什么代码


抱歉,这听起来有点模糊。

为什么不使用NSPoupButton?

为什么不使用NSPoupButton?

如果您确实需要自己滚动此按钮,而不是使用显示菜单的内置控件之一,您可以创建一个NSPoupButtonCell并使用它来显示NSMenu:

NSPopUpButtonCell *popupCell = [[NSPopUpButtonCell alloc] initTextCell:@"" pullsDown:YES];
[popupCell setMenu:yourMenu];
[popupCell trackMouse:event inRect:[yourButton bounds] ofView:yourButton untilMouseUp:YES];
[popupCell release];

您需要根据需要调整pullsDown:、inRect:、ofView:参数,以按所需方式定位菜单。

如果您确实需要自己滚动,而不是使用显示菜单的内置控件之一,则可以创建NSPopupButtonCell并使用它来显示NSMenu:

NSPopUpButtonCell *popupCell = [[NSPopUpButtonCell alloc] initTextCell:@"" pullsDown:YES];
[popupCell setMenu:yourMenu];
[popupCell trackMouse:event inRect:[yourButton bounds] ofView:yourButton untilMouseUp:YES];
[popupCell release];

您可能需要根据需要调整pullsDown:、inRect:、ofView:参数,以便按照您想要的方式定位菜单。

n我的第一个想法也是这样。这就是带有“动作装备”按钮的应用程序完成菜单的方式


不过,如果您还有其他想法,请查看NSMenu的
+popUpContextMenu:withEvent:forView:
。只需将一个操作方法挂接到按钮上,创建一个NSMenuItems并用NSMenuItems填充它,然后从NSApplication的
currentEvent
getter将其沿着当前事件发送到此方法。

NSPOUPPBUTton也是我的第一个想法。这就是带有“动作装备”按钮的应用程序完成菜单的方式



不过,如果您还有其他想法,请查看NSMenu的
+popUpContextMenu:withEvent:forView:
。只需将一个动作方法挂到按钮上,创建一个NSMenuItems并用NSMenuItems填充它,然后沿着NSApplication的
currentEvent
getter中的当前事件将其发送到此方法。

Nat:我要猜Cocoa,在Objective-C中。(标记…)你应该将其添加到标题中以吸引答案。Nat:我要猜Cocoa,在Objective-C.(标记…)中,你应该将其添加到标题中以吸引答案。我不会将弹出按钮单元格仅用于菜单,尤其是当你可以cal
popUpContextMenu
时。我不知道popUpContextMenu方法允许精确控制菜单位置(包括通过相对于视图的不同边缘重新定位来正确处理靠近屏幕边缘的情况)。我不会将弹出按钮单元格仅用于菜单,尤其是当您可以cal
popUpContextMenu
时。我不知道popUpContextMenu方法允许精确控制菜单定位(包括通过相对于视图的不同边缘重新定位来正确处理靠近屏幕边缘的情况)。您将如何使用该方法控制菜单位置的详细信息?您希望将具有适当位置的NSEvent作为事件的-LocationInWindow传递给它。您将如何使用该方法控制菜单位置的详细信息?您希望将具有适当位置的NSEvent作为事件的-LocationInWindow传递给它我让弹出按钮在结尾不显示箭头,看起来像一个普通的按钮,里面有图像?把它分类,不显示箭头,看起来像一个普通的按钮,但是我如何将它显示为图像而不是文本?为什么你想隐藏它是一个弹出窗口?用户怎么知道单击它会弹出一个菜单?别担心,我已经知道了orted列出了我想做的事情。我如何使弹出按钮不在末尾显示箭头,看起来像一个普通按钮,里面有图像?将其排序出来,不显示箭头,看起来像一个普通按钮,但我如何将其显示为图像而不是文本?为什么要隐藏它是一个弹出窗口?用户如何知道单击它会弹出菜单?别担心,我已经把我想做的事情整理好了。