如何在OS X中按按钮而非右键单击以显示菜单

4
当我将菜单分配给按钮时,当用户右键单击按钮时,菜单将显示。
我想在用户左键单击按钮时打开菜单。
类似于这个:

enter image description here


我用这段代码使其工作了,但是菜单显示在我的屏幕右上角。我做错了什么?
@IBOutlet var meeenu: NSMenu!
@IBAction func Options(sender: NSButtonCell) {
    meeenu.popUpMenuPositioningItem(meeenu.itemAtIndex(0), atLocation: NSEvent.mouseLocation(), inView: self.view)
}

NSMenu 提供了显示菜单的方法,你尝试过什么,哪些方法没有起作用? - CRD
@CRD 你能介绍我认识其中一个吗?我刚刚尝试了 sender.menu?.popUpMenuPositioningItem(sender.menu?.itemAtIndex(0), atLocation: NSEvent.mouseLocation(), inView: self.view) 但是它没有起作用 - Faisal
编辑你的问题,添加代码并说明出了什么问题。有了这些信息,可能会有人能够帮助你。 - CRD
最终它可以工作了,但是菜单没有出现在鼠标位置,而是出现在屏幕的右上角。你能提供一些帮助吗? - Faisal
没关系,它起作用了!self.view -> nil已经修复了。 - Faisal
1个回答

12

最终我使用了这段代码,它可以正常工作:

@IBOutlet var meeenu: NSMenu!
@IBAction func Options(sender: NSButtonCell) {
    meeenu.popUpMenuPositioningItem(meeenu.itemAtIndex(0), atLocation: NSEvent.mouseLocation(), inView: nil)
}

1
请注意,在Swift 5中,函数应为:meeenu.popUp(positioning: meenu.item(at: 0), at: NSEvent.mouseLocation, in: self.view) - Richard Williamson
菜单项未启用...你知道为什么吗? - Ashish Gupta
@AshishGupta 是的,你实际上需要将该项目与一个功能连接起来。然后它才会被启用。 - ehmunnehm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接