Cocoa NSApplication不活动,但正在接收鼠标事件



我有一个奇怪的问题,我点击远离我的窗口。它放弃了主键。然后我点击回到它,被点击的视图不响应鼠标点击。但是第二次点击确实会导致视图响应。就好像在第一次点击时,窗口不是键,而点击使它成为键,并能够处理第二次点击。

我子类化NSApplication并拦截sendEvent:,看看我的应用程序是否在第一次单击事件期间获得事件,确实如此。此外,我抛弃了响应链,看到我的视图确实在链中,但直到第二次点击窗口才成为关键。我还注意到,当我收到第一个点击事件时,应用程序甚至没有活动。这怎么可能呢?应用程序在接收到鼠标事件时不应该变得活动吗?鸡和蛋…

想法/概况吗?

更新:阅读完文档后,我发现了这个:

当光标在视图对象上时,用户按下鼠标按钮时发送mouse -down事件。如果包含视图的窗口不是键窗口,则该窗口成为键窗口并丢弃鼠标下移事件。但是,视图可以通过重写NSView的acceptsFirstMouse:方法来绕过这个默认行为,返回YES。

这似乎就是正在发生的事情。然而,我尝试重写acceptsFirstMouse:acceptsFirstResponder,但无济于事。我的观点仍然不是"接受第一个鼠标"。

谢谢!

in 10.10>在你的应用程序委托中-你可以挂钩到鼠标事件,然后强制窗口成为活动状态。

- (void)applicationDidUpdate:(NSNotification *)notification {
     NSLog(@"did update");
    // [[NSApp mainWindow] makeKeyWindow];doesn't work. not sure why. 
    [[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
}
- (void)applicationDidResignActive:(NSNotification *)notification {
   // your window lost focus here
}
- (void)applicationDidBecomeActive:(NSNotification *)notification {
   // 
}

相关内容

  • 没有找到相关文章

最新更新