无法在自定义 NSViewController 中注册鼠标事件
Posted
技术标签:
【中文标题】无法在自定义 NSViewController 中注册鼠标事件【英文标题】:Unable to get mouse events to register in custom NSViewController 【发布时间】:2016-03-13 04:23:38 【问题描述】:这是我的代码,为了简洁而简化:
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 中看到它。
当我按下键盘上的按钮时,我会在控制台中看到“栏”。当我单击鼠标时,我什么也看不到。一旦我单击鼠标,就不会再注册其他按键事件了。
我错过了什么?为什么鼠标事件会偷走响应者链,它要去哪里?
【问题讨论】:
鼠标点击可以改变第一响应者。做一些阅读:Overview of Mouse Events 【参考方案1】:就像@Willeke 提到的那样,第一响应者可能通过鼠标单击而改变。
你可以像这样在鼠标按下时设置第一响应者:
override func mouseDown(theEvent: NSEvent)
self.view.window.makeFirstResponder(self)
现在您应该可以接收所有事件了。
【讨论】:
以上是关于无法在自定义 NSViewController 中注册鼠标事件的主要内容,如果未能解决你的问题,请参考以下文章
无法在自定义 UITableViewCell 中更新 UITextView 的文本
无法在自定义 TableViewCell 中编辑 UITextView