Невозможно получить события мыши для регистрации в пользовательском 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)
}
Теперь вы должны иметь возможность получать все события.