xcode - 以编程方式快速将 NSClickGestureRecognizer 添加到 NSButton

标签 xcode cocoa swift gesture nsbutton

我用这段代码生成了多个 NSButtons:

var height = 0
var width = 0

var ar : Array<NSButton> = []

var storage = NSUserDefaults.standardUserDefaults()

height = storage.integerForKey("mwHeight")
width = storage.integerForKey("mwWidth")

var x = 0
var y = 0
var k = 1
for i in 1...height {
    for j in 1...width {
        var but = NSButton(frame: NSRect(x: x, y: y + 78, width: 30, height: 30))
        but.tag = k
        but.title = ""
        but.action = Selector("buttonPressed:")
        but.target = self
        but.bezelStyle = NSBezelStyle(rawValue: 6)!
        ar.append(but)
        self.view.addSubview(but)
        x += 30
        k++
    }
    y += 30
    x = 0
}

而且我需要将 NSClickGestureRecognizer 添加到它们中的每一个以识别二次鼠标按钮点击。有没有办法以编程方式做到这一点?

最佳答案

这应该有效:

let g = NSClickGestureRecognizer()
g.target = self
g.buttonMask = 0x2 // right button
g.numberOfClicksRequired = 1
g.action = Selector("buttonGestured:")
but.addGestureRecognizer(g)

以后

func buttonGestured(g:NSGestureRecognizer) {
    debugPrintln(g)
    debugPrintln(g.view)
    if let v = g.view as? NSButton {
        debugPrintln("tag: \(v.tag)")
    }
}

关于xcode - 以编程方式快速将 NSClickGestureRecognizer 添加到 NSButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29349062/

相关文章:

ios - 在Xcode Beta中分发内部版本时,“IPA处理失败”

swift - 在 RealityKit 中导入多个 .usdz 对象并为其设置动画

objective-c - 用灰色突出显示 UIImageView

macos - 是否可以使用 Preview.app 在特定页面打开 PDF?

objective-c - 如何居中 NSSegmentedControl

objective-c - @property,setter 和 getter 问题?

swift - 错误 : Variable used within its own initial value with type(of:) function

ios - 在不改变大小的情况下改变 skspritenode 的纹理

swift - 在 OS X 中,如何正确获取窗口框架大小?

swift - 将具有多个参数的函数分配给变量