对于一个有很多遗留代码的跨平台项目,我的 Cocoa 应用程序只使用一个带有自定义 NSView 的 NSWindow,它捕获所有鼠标事件并绘制我的所有应用程序图形细节。
我需要实现本地模式行为,所以我在主线程中使用:
CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.01, false);
在语言环境循环内。该函数在 0.01 秒后按预期返回,值为 kCFRunLoopRunTimedOut。但是,在此期间自定义 NSView 不再接收鼠标事件,因此我的应用程序看起来像是被冻结了(颜色鼠标光标转来转去)。
定时器事件仍会到达自定义 NSView,但不会到达鼠标事件。
Apple 指定可以递归调用此函数。还有什么我应该做的,以便 NSView 仍然接收用户鼠标输入吗?