当前位置: 首页 > 面试题库 >

检测NSStatusItem(Swift)上的左右点击事件

南门意蕴
2023-03-14
问题内容

我正在构建一个状态栏应用程序,并希望根据用户单击左侧还是右侧来调用不同的操作。这是我到目前为止的内容:

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")
}

没有调用我的函数,也找不到我们的原因。感谢您的帮助!


问题答案:

你有没有尝试过:

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



 类似资料:
  • 问题内容: 我的代码是: 我只想在伪元素(红色位)上触发点击事件。也就是说,我不希望在蓝色位触发点击事件。 问题答案: 这不可能; 伪元素根本不是DOM的一部分,因此您不能将任何事件直接绑定到它们,只能绑定到其父元素。 如果仅在红色区域上必须具有单击处理程序,则必须制作一个子元素(如a),将其放置在开始标记之后,将样式应用于而不是,并绑定到它。

  • 问题内容: 我试图区分OnClick函数中的左键单击和右键单击。但, 证明e 。对于合成事件未定义。如何在此处区分左键和右键? 问题答案: 您也可以这样做。同时拥有onClick和onContextMenu处理程序 您可以根据其他答案的建议进行检查,也可以进行检查。(此外,如果右键单击,请阻止默认设置。) 使用 使用 这是一个演示 http://jsbin.com/seyeliv/edit?htm

  • 问题内容: 对于Windows和Linux,我能够检测到右键单击。但是对于Mac,我不知道如何检测右键单击。 如何编写Java程序以检测Mac OS的右键单击 感谢Sunil KUmar Sahoo 问题答案: 这与检测Windows或Linux上的右键单击相同–您调用给定的MouseEvent的方法来检查是否被单击。例如,看一下示例MouseListener的以下代码片段: 但是,这仅在用户实际

  • 问题内容: 我有一个id为“ content- area”的div,当用户在该div之外单击时,我想提醒他们他们在该div之外单击的事实。我将如何使用JavaScript解决此问题? 问题答案: 用纯Javascript 看看这个小提琴,看看这就是你所追求的!

  • 本文向大家介绍js实现图片点击左右轮播,包括了js实现图片点击左右轮播的使用技巧和注意事项,需要的朋友参考一下 这个 相当于一个小框架,拿来就可以用: 1. 功能:  如上图显示: 点击左右两个button,可以实现图片向左右滚动,也可以设置在多少秒自己滚动。 2. 首先建立一个js文件,文件名为play.js(只要和HTML中的引入相同就可以了): 3. 建立一个HTML文件:  其中:样式自己

  • 我有一个,我想左键点击,右键点击。通常,在JTable上单击鼠标左键可以选择一行。我想做同样的右键点击加上显示一个弹出菜单。有人知道怎么做吗?