gpt4 book ai didi

swift - Swift 中的 NSMenu 选择器

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:16 24 4
gpt4 key购买 nike

我不知道为什么这不起作用。菜单显示,但如果我将 autoenablesItems 保留为默认值,则菜单会显示为灰色,如果我将其设置为 false,则不会调用操作。

class GameScene: SKScene {
// ...
func action1(sender: AnyObject) {
println("Urk, action 1")
}

func action2(sender: AnyObject) {
println("Urk, action 2")
}

func popUpMenu(#event: NSEvent) {
var theMenu = NSMenu(title: "Contextual menu")
theMenu.addItemWithTitle("Action 1", action: Selector("action1:"), keyEquivalent: "")
theMenu.addItemWithTitle("Action 2", action: Selector("action2:"), keyEquivalent: "")
//theMenu.autoenablesItems = false
NSMenu.popUpContextMenu(theMenu, withEvent:event, forView:self.view)
}

override func mouseDown(theEvent: NSEvent) {
self.popUpMenu(event: theEvent) // The menu shows
}
}

更新

根据@Chuck 的回答,您需要执行以下操作:

func popUpMenu(#event: NSEvent) {
var theMenu = NSMenu(title: "Contextual menu")
theMenu.addItemWithTitle("Action 1", action: Selector("action1:"), keyEquivalent: "")
theMenu.addItemWithTitle("Action 2", action: Selector("action2:"), keyEquivalent: "")

for item: AnyObject in theMenu.itemArray {
if let menuItem = item as? NSMenuItem {
menuItem.target = self
}
}

NSMenu.popUpContextMenu(theMenu, withEvent:event, forView:self.view)
}

最佳答案

听起来您的问题是使用该方法创建的 NSMenuItem 没有接收者,因此它使用响应者链,而该对象不在响应者链中。您可以通过将菜单项的目标设置为 self 来强制它看到您的对象。

关于swift - Swift 中的 NSMenu 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24373004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com