简体   繁体   中英

Add NSClickGestureRecognizer to NSButton programmatically swift

I have multiple NSButtons generated with this code:

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
}

And I need to add the NSClickGestureRecognizer to each of them to recognize secondary mouse button clicks. Is there any way to do that programmatically?

This should work:

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

and later

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM