我能够成功地从我的窗户控制器的KeyDown键盘事件作出反应:方法。
在执行鼠标拖拽的问题出现了:
键盘事件似乎被推迟,将仅在鼠标弹起。
需要明确的是,我的意思是:
•放置日志语句在你的窗控制器的KeyDown:方法
•启动您的应用程序,执行一些拖放操作(在NSSlider为前。)
•同时保持阻力,按任意键:没有登录到控制台。
•释放拖动:日志出现,耶...
我正在拖动控制是一个自定义NSSlider。
我已经实现了使用“鼠标跟踪环”的方法拖动机制。 对于我个人理解,拖动时,的NSApplication的主运行的循环模式切换到NSEventTrackingRunLoopMode,从而限制进入的事件。
所以,我只是简单地添加NSKeyDownMask&NSKeyUpMask在我的跟踪环路和encoutered时,称为self.nextResponder的keyDown /向上:相应的方法。 我的问题是解决了这个特定的自定义子类。
但对于可可的本地控制? 我不能代码例外...
我所希望的NSEvent的“addLocalMonitorForEventsMatchingMask:”方法,但很可惜,说DOC:“不会被要求由嵌套的事件跟踪环路,如控制跟踪,跟踪菜单或窗口中拖动消耗事件”。
那么,是不是有一个简单的解决方案,以接收键盘事件,无论应用程序的runloop模式?