Dev*_*per 7 macos cocoa nsstatusitem nsstatusbar swift
我正在寻找一种方法来检测何时NSStatusBarButton右键单击(使用Swift)并调用操作.
我目前正在这样设置:
let statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-1)
func applicationDidFinishLaunching(aNotification: NSNotification) {
// Insert code here to initialize your application
if let button = statusItem.button {
button.image = NSImage(named: "myImage")
button.alternateImage = NSImage(named: "myImage")
button.action = Selector("myAction")
}
}
Run Code Online (Sandbox Code Playgroud)
我想过使用button.rightMouseDown(<#theEvent: NSEvent#>)(因为没有这样的"alternateAction"),但不幸的是,由于我刚开始编写Mac应用程序,我无法想出一些东西.
更新:
在寻找一种方法时,我看到一些线程告诉子类a,
NSView但我不知道它应该如何工作(这可能是因为我对编程很新,甚至不知道如何"子类").我仍然认为有一些更简单的方法可以使用它,因为statusBar我所知道的几乎所有应用程序都依赖于右键.
您可以子类化并重写该mouseDown方法,但自 Mac OS X 10.10 (Yosemite) 以来,出现了一种更简单的方法:NSGestureRecognizer及其子类:
func applicationDidFinishLaunching(aNotification: NSNotification) {
// Insert code here to initialize your application
if let button = statusItem.button {
button.image = NSImage(named: "myImage")
button.alternateImage = NSImage(named: "myImage")
button.action = Selector("myAction")
// Add right click functionality
let gesture = NSClickGestureRecognizer()
gesture.buttonMask = 0x2 // right mouse
gesture.target = self
gesture.action = "myRightClickAction:"
button.addGestureRecognizer(gesture)
}
}
func myRightClickAction(sender: NSGestureRecognizer) {
if let button = sender.view as? NSButton {
// Handle your right click event here
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1692 次 |
| 最近记录: |