选项并启动应用程序一切正常:
面板显示在其他任何事物的前面
鼠标光标悬停在面板的边缘,它从正常变化
箭头光标到相应的resize-cursor,所以用户知道他可以调整大小
面板.
这可以很好的工作,因为我没有点击任何其他应用程序
例如Safari或Finder.
从我一度把焦点放在另一个应用程序的那一刻,
我可以点击并将鼠标悬停在我的面板上,就像我想要的那样
光标样式不会改变 – 它始终保持箭头,不可能返回正常行为.
面板保持可选择,在前面,您仍然可以移动并调整大小,
但鼠标光标始终保持箭头.然后你甚至不能改变它
手动使用如下[[NSCursor crosshairCursor] set].
所以我需要找到一种方法来创建保持正常的NSPanel
自动变-cursorstyle-当悬停-过面板边缘行为
即使您将重点放在另一个应用程序上.
我已经尝试使用一个定制的NSPanel类,
我已经覆盖了canBecomeKeyWindow和
canBecomeMainWindow方法,让它们返回YES
但即使我使我的Panel KeyWindow和MainWindow …
[myPanel makeKeyAndOrderFront:self]; [myPanel makeMainWindow];
…它不能解决游标问题.
如果有人可以在这里帮助我会很棒:)
PS:在我的项目中,Base SDK和部署目标设置为10.8
所以我发现所描述的问题与面板的窗口状态毫无关系.如果它设置为键或主键,这并不重要,而是光标问题(始终保持箭头)与应用程序的激活状态有关.
只要拥有面板的应用程序处于活动状态,一切都可以正常工作,但是如果单击另一个应用程序,我的应用程序将被停用,并且不会再次启用 – 即使您单击面板 – 因为“非激活”选项是启用.
问题是我需要“非激活”选项,因为我正在创建一个状态栏 – 屏幕捕获应用程序,应该显示和操作在其他的前面,但不停用任何正在运行的应用程序.我可以解决光标问题
[NSApp activateIgnoringOtherApps];
但是随后在Safari中运行的全屏视频的屏幕截图将停用Safari并最大限度地减少视频(我不想要的).
解决方法
当然,系统可以做到这一点(就像当你使用⌘⇧4拍摄截图时),因为这是在窗口系统本身.