在 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
}
}
我是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
}
}