Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 与PopupMenuPositionGitem:atLocation:inView混淆:_Cocoa_Macos - Fatal编程技术网

Cocoa 与PopupMenuPositionGitem:atLocation:inView混淆:

Cocoa 与PopupMenuPositionGitem:atLocation:inView混淆:,cocoa,macos,Cocoa,Macos,该方法的文档说明:“在指定位置弹出菜单。”但pamameters似乎描述了不同的情况: item The menu item to be positioned at the specified location in the view. location The location in the view coordinate system to display the menu item. view The view to display the menu item over. 这些参数似

该方法的文档说明:“在指定位置弹出菜单。”但pamameters似乎描述了不同的情况:

item
The menu item to be positioned at the specified location in the view.

location
The location in the view coordinate system to display the menu item.

view
The view to display the menu item over.

这些参数似乎暗示您将只弹出一个菜单项。这个方法实际上是做什么的

我不知道你怎么知道它可能只是弹出一个菜单项——甚至没有弹出菜单项这样的东西。在参数描述中,没有任何地方说它不会显示弹出菜单。参数描述都提到该项,因为它们都与该项的位置有关。它的工作原理如文件所述。

为方便起见,您可以设置单个菜单项的坐标。您的菜单将相应地定位在单个菜单项周围

您会注意到,NSPopUpButton的行为就是这样的:所选菜单项始终直接位于按钮上方


如果您不想让菜单表现出这样的行为,只需输入最上面的菜单项。

您忘记了一件事:这是您发送给菜单对象的消息

用英语,信息是:

“嘿,菜单!自己弹出,将此项目定位在相对于此视图的此位置。”

这些参数描述了整个弹出式菜单的显示位置,即将菜单中的特定项定位在特定位置。整个菜单显示为弹出菜单,而不仅仅是定位项。只弹出一个项目是毫无用处的


还有一件事:这种方便的方法是在SnowLeopard中引入的,所以,如果您的目标是Leopard或更早的产品,您就不能依赖它。您必须使用另一种解决方案,例如我在回答您之前的一个问题时建议的NSPopUpButtonCell。

在参数描述中没有这样说,但文档中方法名称后的第一行是:“在指定位置弹出菜单。”事实上,它会在指定的位置弹出菜单。实际上,你只需对该项传递nil,菜单就会自动做正确的事情。