Как установить действие для значка строки меню при жесте смахивания в Swift / SwiftUI - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь получить небольшое тестовое приложение, над которым я работаю, чтобы вывести мини-окно с представлением SwiftUI, когда значок строки меню перемещается вниз. Вместо того, чтобы нажимать кнопку для открытия окна, проведите двумя пальцами вниз, как если бы пользователь потянул вниз значок, чтобы окно появилось. Я все еще немного новичок в Swift, но пока у меня в AppDelegate есть следующее:

if let button = statusBar.button{
      let iconImage = NSImage(named: NSImage.Name(("iconPic")))
      button.image = iconImage
      button.action = #selector(self.handleOpenPlayerDescriptionWindow(_:))
      button.sendAction(on: .swipe)
//      button.sendAction(on: .leftMouseDown)
    }

 @objc func handleOpenPlayerDescriptionWindow(_ sender: NSMenuItem){
//code to show swiftUI Window 
...
}

Всплывающее окно - это просто текстовое представление заполнителя со статистикой игры игрока NBA. Я закомментировал sendAction с помощью ' leftMouseDown ' в приведенном выше коде, потому что он работает отлично, но когда я меняю его на ' swipe ' как sendAction , ничего не делает. Я также пробовал ' beginGesture ', ' endGesture ' и ' gesture ', но все не сработало, ближайший успех был ' leftMouseDragged ', но не совсем то, что я собираюсь.

Я использую SwiftUI, а не раскадровку, если, возможно, проблема в этом

1 Ответ

0 голосов
/ 13 июля 2020

У этого метода есть ограничение, так как задокументировано только c маски проверяются этим методом, swipe нет.

> Declaration
> 
> func sendAction(on mask: NSEvent.EventTypeMask) -> Int Discussion
> 
> You use this method during mouse tracking when the mouse button
> changes state, the mouse moves, or if the cell is marked to send its
> action continuously while tracking. Because of this, the only bits
> checked in mask are NSLeftMouseDownMask, NSLeftMouseUpMask,
> NSLeftMouseDraggedMask, and NSPeriodicMask, which are declared in the
> NSEvent class reference.
...