以编程方式将 NSClickGestureRecognizer 添加到 NSButton swift
Add NSClickGestureRecognizer to NSButton programmatically swift
我用这段代码生成了多个 NSButton:
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)")
}
}
我用这段代码生成了多个 NSButton:
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)")
}
}