Обнаружение события mouseUp от NSSlider в Swift 4 / MacOS - PullRequest
1 голос
/ 13 апреля 2019

Я довольно новичок в Swift, поэтому, пожалуйста, помилуй меня.

У меня есть функция, которую я хочу вызвать, когда пользователь закончил скольжение объекта NSSlider. Моя естественная мысль - использовать событие mouseUp. Тем не менее, много Google и чтение документации оставили меня в затруднительном положении. Что мне здесь не хватает?


    @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?

1 Ответ

0 голосов
/ 14 апреля 2019

Спасибо @Willeke за публикацию этого возможного дубликата. С информацией, содержащейся в нем, я смог решить это для себя. Для всех, кто интересуется этой темой, вот мое решение, которое было обновлено для Swift 4:



    @IBAction func sliderValueChanged(_ sender: NSSlider) {

        let event = NSApplication.shared.currentEvent

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

        // Do something

        }

    }

...