简化为:
我有以下内容:
NSWindow
(这是应用程序的主窗口)
NSPanel
(使用NSWindow
在主[NSApp beginSheet:
上显示为工作表
主NSWindow
有一个使用鼠标事件的子类NSButton
,包括mouseEntered
,mouseExited
。当我将鼠标悬停在按钮上时,这会改变按钮的背景颜色。
我提出我的NSPanel
,它也有一个NSButton
的相同子类,可以在悬停时更改颜色。
在显示我的NSWindow
时,主NSPanel
内仍会出现鼠标事件。我可以告诉你,因为悬停在按钮上仍然有效。
然而,将鼠标悬停在所呈现的NSPanel
中的按钮上不起作用,尽管它们与其他按钮没有区别。我可以点击它们并收到一个动作。但他们不会召唤鼠标事件。
ORIGINAL:
我的Mac应用程序中有一个简单的设置。我有一个主要的NSWindow,就像任何一般的mac应用程序一样,然后我运行以下代码来显示我的详细视图。
我的详细信息视图是NSWindowController
子类,我将其显示为工作表。这是在xib中设置为NSPanel
,只是在我的主窗口上为我显示详细视图。
APDetailWindowController *vc = [[APDetailWindowController alloc] initWithWindowNibName:@"APDetailWindowController"];
self.detailWindowController = vc;
self.detailWindowController.delegate = self;
APAppDelegate *appDelegate = [[NSApplication sharedApplication] delegate];
[NSApp beginSheet:self.detailWindowController.window modalForWindow:appDelegate.window modalDelegate:self didEndSelector:nil contextInfo:nil];
在我的主窗口(AppDelegate)中,我将我的视图显示为任何应用程序,包括一些NSButton。这些按钮是子类,因此当它们收到mouseEntered
和mouseExited
事件时,它们会改变颜色。基本上创建翻转效果。
在我的详细视图中,我也有相同子类的按钮。但是,它们根本没有收到鼠标事件。我可以看到将鼠标移到它们上面时没有任何反应。即使显示详细视图,翻转也会在背景中的主窗口按钮上起作用,但不会在我的详细视图中起作用。
我想也许某些焦点仍然在主窗口上,需要设置到详细信息窗口?