NSPanel表未接收鼠标事件

时间:2014-08-17 19:10:26

标签: objective-c macos mouseevent nswindow nsbutton

简化为:

我有以下内容:

  1. NSWindow(这是应用程序的主窗口)

  2. NSPanel(使用NSWindow在主[NSApp beginSheet:上显示为工作表

  3. NSWindow有一个使用鼠标事件的子类NSButton,包括mouseEnteredmouseExited。当我将鼠标悬停在按钮上时,这会改变按钮的背景颜色。

  4. 我提出我的NSPanel,它也有一个NSButton的相同子类,可以在悬停时更改颜色。

  5. 在显示我的NSWindow时,主NSPanel内仍会出现鼠标事件。我可以告诉你,因为悬停在按钮上仍然有效。

  6. 然而,将鼠标悬停在所呈现的NSPanel中的按钮上不起作用,尽管它们与其他按钮没有区别。我可以点击它们并收到一个动作。但他们不会召唤鼠标事件。

  7. 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。这些按钮是子类,因此当它们收到mouseEnteredmouseExited事件时,它们会改变颜色。基本上创建翻转效果。

    在我的详细视图中,我也有相同子类的按钮。但是,它们根本没有收到鼠标事件。我可以看到将鼠标移到它们上面时没有任何反应。即使显示详细视图,翻转也会在背景中的主窗口按钮上起作用,但不会在我的详细视图中起作用。

    我想也许某些焦点仍然在主窗口上,需要设置到详细信息窗口?

0 个答案:

没有答案