Обнаружение событий левого и правого клика на NSStatusItem (Swift)
Я создаю приложение в строке состояния и хочу вызывать различные действия в зависимости от того, нажал ли пользователь влево или вправо. Вот что у меня так далеко:
var statusItem = NSStatusBar.system().statusItem(withLength: -1)
statusItem.action = #selector(AppDelegate.doSomeAction(sender:))
let leftClick = NSEventMask.leftMouseDown
let rightClick = NSEventMask.rightMouseDown
statusItem.button?.sendAction(on: leftClick)
statusItem.button?.sendAction(on: rightClick)
func doSomeAction(sender: NSStatusItem) {
print("hello world")
}
Моя функция не вызывается, и я не могу найти наш почему. Я ценю любую помощь!
2 ответа
Ты пытался:
button.sendAction(on: [.leftMouseUp, .rightMouseUp])
Затем, увидев, какая кнопка мыши была нажата в doSomeAction()
функционировать?
Так это будет выглядеть примерно так...
let statusItem = NSStatusBar.system().statusItem(withLength: NSSquareStatusItemLength)
func applicationDidFinishLaunching(_ aNotification: Notification) {
if let button = statusItem.button {
button.action = #selector(self.doSomeAction(sender:))
button.sendAction(on: [.leftMouseUp, .rightMouseUp])
}
}
func doSomeAction(sender: NSStatusItem) {
let event = NSApp.currentEvent!
if event.type == NSEventType.rightMouseUp {
// Right button click
} else {
// Left button click
}
}
https://github.com/craigfrancis/datetime/blob/master/xcode/DateTime/AppDelegate.swift
Обновлено: SWIFT 4
Я обновил (Крейг Фрэнсис) ответ
func doSomeAction(sender: NSStatusItem) {
let event = NSApp.currentEvent!
if event.type == NSEvent.EventType.rightMouseUp{
// Right button click
} else {
// Left button click
}