Cocoa NSButton不总是响应鼠标单击

Cocoa NSButton不总是响应鼠标单击,cocoa,onclick,transparency,nsbutton,Cocoa,Onclick,Transparency,Nsbutton,这是我的问题,我有一个无笔尖的应用程序,这个应用程序显示(具有淡入/淡出效果)一个类似10.8通知的NSWindow 在此通知中,我有两个NSButton,它们是通过编程方式创建的,如下所示: NSImage *btnNeutral = [[NSImage imageNamed:@"btn-toaster-n.png"] retain]; [btnNeutral setTemplate:NO]; NSImage *btnPressed = [[NSImage imageN

这是我的问题,我有一个无笔尖的应用程序,这个应用程序显示(具有淡入/淡出效果)一个类似10.8通知的NSWindow

在此通知中,我有两个NSButton,它们是通过编程方式创建的,如下所示:

    NSImage *btnNeutral = [[NSImage imageNamed:@"btn-toaster-n.png"] retain];
    [btnNeutral setTemplate:NO];
    NSImage *btnPressed = [[NSImage imageNamed:@"btn-toaster-clic.png"] retain];
    [btnPressed setTemplate:NO];

    m_connectButton = [[NSButton alloc] initWithFrame:NSMakeRect(284, 49, 77, 22)];
    [m_connectButton setTarget:self];
    [m_connectButton setAction:@selector(connect:)];
    [m_connectButton setImage:btnNeutral];
    [m_connectButton setAlternateImage:btnPressed];
    [m_connectButton setButtonType:NSMomentaryChangeButton];
    [[m_connectButton cell] setImageDimsWhenDisabled:NO];
    [m_connectButton setBordered:NO];
    [m_connectButton setFocusRingType:NSFocusRingTypeExterior];
    [m_connectButton setTitle:Localizer::getInstance()->getLocalizedString(@"SYSTRAY_BALLOON_CONNECT_ACTION")];
    [m_connectButton setEnabled:YES];
    [self addSubview:m_connectButton];
注意:我的NSWindow是透明的,我的NSView是透明的,但与我的按钮一样,它的皮肤也带有NSImage

问题:当我点击2个按钮中的一个时,5次中有1次有效

问题来自哪里?线程问题?透明度

谢谢你的意见

@Rob Keniger:是的,我有一个runloop,我用这个启动我的应用程序:

[NSApplication sharedApplication];
我还有一个动态的NSMenuBar,就是那个运行良好的应用程序

编辑 我找到了一个解决办法,但我想知道我在这里遗漏了什么。我只是将按钮的初始化从自定义视图的initWithFrame方法放到承载相同视图的窗口的initWithContentRect方法中。
你知道为什么会这样吗?

你需要给我们更多。没有Nib的应用如果没有正确实现,可能会出现各种各样的问题,这就是为什么苹果建议你使用Nib。如何初始化应用程序?你有一个运行循环吗?是的,我有一个运行循环,我初始化我的应用程序(或者我想我有),我会尝试添加一个带有按钮的其他假窗口,并检查它是否正确处理点击事件。我刚刚创建了一个带有按钮的新NSWindow,这个窗口非常好用,我认为这更像是一个透明度问题,而不是运行循环/事件问题。您需要向我们提供更多信息。没有Nib的应用如果没有正确实现,可能会出现各种各样的问题,这就是为什么苹果建议你使用Nib。如何初始化应用程序?你有一个运行循环吗?是的,我有一个运行循环,我初始化了我的应用程序(或者我想我有),我会尝试添加一个带有按钮的假窗口,并检查它是否正确处理点击事件。我刚刚创建了一个带有按钮的新NSWindow,这个窗口工作得非常好,所以,我认为这更像是一个透明度问题,而不是运行循环/事件问题