在 Swift 4 / MacOS 中检测来自 NSSlider 的 mouseUp 事件

Detect mouseUp event from NSSlider in Swift 4 / MacOS

我是Swift的新手,所以请怜悯我。

我有一个函数,我想在用户完成滑动 NSSlider 对象时调用它。我的自然想法是使用 mouseUp 事件。然而,大量的谷歌搜索和阅读文档让我陷入困境。我在这里错过了什么?


    @IBOutlet weak var tSlider: NSSlider!
    @IBOutlet weak var tLabel: NSTextField!

    @IBAction func sliderValueChanged(_ sender: NSSlider) {

        if let label = self.value(forKey: "tLabel") as? NSTextField {

            label.intValue = sender.intValue
            t_value = Int8(sender.intValue)

        }

        appDelegate.sendValue()

        Swift.print("Value Changed")

        // Detect Mouse Up

        override func mouseUp(with theEvent: NSEvent) {

             appDelegate.sendHIDValue()

             Swift.print("Mouse Up")

         }

    }

当我从滑块上松开鼠标按钮时没有任何反应。但是,如果我在 window 本身中将鼠标移开,我会得到一个鼠标移开事件。具体来说,我如何从 NSSlider 获取鼠标弹起事件?

感谢@Willeke 发布可能重复的内容。有了其中包含的信息,我能够自己解决这个问题。对于对此主题感兴趣的任何其他人,这是我为 Swift 4 更新的解决方案:



    @IBAction func sliderValueChanged(_ sender: NSSlider) {

        let event = NSApplication.shared.currentEvent

        if event?.type == NSEvent.EventType.leftMouseUp {

        // Do something

        }

    }