Невозможно получить события мыши для регистрации в пользовательском NSViewController

Вот мой код, упрощенный для краткости:

class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var window: NSWindow!
    var fooController: FooController!

    func applicationDidFinishLaunching(aNotification: NSNotification) {

        self.fooController = FooController(frame: self.window.frame)

        self.window.contentViewController = self.fooController
        self.window.makeFirstResponder(self.fooController)
    }
}

class FooController: NSViewController {

    override func mouseUp(theEvent: NSEvent) {
        print("foo")
    }

    override func keyUp(theEvent: NSEvent) {
        print("bar")
    }
}

мой MainMenu.xib имеет одно окно, которое вы можете увидеть выше в AppDelegate.

Когда я нажимаю кнопку на моей клавиатуре, я вижу "панель" в консоли. Когда я щелкаю мышью, я ничего не вижу. Как только я щелкаю мышью, дальнейшие ключевые события не регистрируются.

Что мне не хватает? Почему события мыши крадут цепочку респондента и куда они идут?

1 ответ

Как упомянуто @Willeke, первый респондент, вероятно, изменяется с помощью щелчка мыши.

Вы можете установить первый респондент при наведении мыши следующим образом:

override func mouseDown(theEvent: NSEvent) {
     self.view.window.makeFirstResponder(self)
}

Теперь вы должны иметь возможность получать все события.

Другие вопросы по тегам