NSView 事件在 child window 几秒后随机停止

NSView events randomly stop after several seconds when having a child window

我有一个主 window 主 NSView 处理它的事件。它工作正常。

但是,一旦我添加了透明 child window,事件将在大约 5 秒后停止随机发送,直到我移动鼠标。例如,如果我滚动,它可以正常工作大约 5 秒,然后根本不会触发 scrollWheel 事件,直到我移动鼠标一点。

(我需要透明 child window 才能在 Metal 视图顶部显示本机元素)。

这是我添加 child window:

的方法
////
 CGRect wRect = main_window.frame;
 NSView *contentView  = main_window.contentView;
 CGRect cRect = contentView.frame;

 CGRect rect = CGRectMake(wRect.origin.x, wRect.origin.y, cRect.size.width, cRect.size.height);
 NSWindow *overlayWindow = [[NSWindow alloc]initWithContentRect:rect
                                                      styleMask:NSBorderlessWindowMask
                                                        backing:NSBackingStoreBuffered
                                                          defer:NO];
overlayWindow.backgroundColor = [[NSColor whiteColor] colorWithAlphaComponent:0];
[overlayWindow setOpaque:YES];


child_view = [[MyView2 alloc] init];
overlayWindow.contentView = child_view;

[main_window addChildWindow:overlayWindow ordered:NSWindowAbove];
///////////

[main_window center];
[main_window makeKeyAndOrderFront:nil];

如果我删除 addChildWindow 调用,事件将再次正常运行。

另外很有趣的是,如果我不通过 overlayWindow.backgroundColor = [[NSColor whiteColor] colorWithAlphaComponent:0]; 将 child window 的背景设置为透明,则不会向主 window 发送任何事件].

更新

这仅适用于鼠标事件(滚动、单击)。键盘事件工作正常。

更新 2

我注意到所有事件在 mouseExited 事件后立即停止,我必须随机移动光标直到我得到 mouseEntered 事件,然后滚动再次工作。

我通过向主视图添加一个 child 视图来解决这个问题,而不是添加一个全新的 window:

[contentView addSubview:child_view];

我不知道 child window 的问题是什么,可能是透明 child windows.

的错误