2

我对 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")

         }

    }

当我从滑块上松开鼠标按钮时,什么也没有发生。但是,如果我在窗口本身上放鼠标,我会得到一个放鼠标事件。具体来说,我如何从 NSSlider 获取鼠标向上事件?

4

1 回答 1

3

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



    @IBAction func sliderValueChanged(_ sender: NSSlider) {

        let event = NSApplication.shared.currentEvent

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

        // Do something

        }

    }

于 2019-04-14T00:14:07.423 回答