gpt4 book ai didi

macos - 防止点击 NSWindow/NSView 时激活应用程序

转载 作者:行者123 更新时间:2023-12-03 16:09:32 28 4
gpt4 key购买 nike

我正在开发一个屏幕截图 Mac 应用程序。我正在尝试重建按下 Cmd-Ctrl-Shift-4 时发生的情况:十字准线光标和屏幕截图的选择矩形。

我在所有其他窗口之上使用自定义无边框 NSWindow。我禁用了光标来绘制自己的选择矩形。

我的问题是,一旦我单击并拖动来捕获屏幕截图,我的应用程序就会被激活(因为单击被我的屏蔽窗口拦截)。<​​/p>

有没有一种方法可以让我在自定义 View /窗口中接收点击,而无需激活我的应用程序?

我尝试使用带有 NSNonactivatingPanelMask 标志的 NSPanel ,但在这种情况下,我的光标出现问题:当另一个应用程序时我无法绘制自己的光标处于事件状态,因为我无法隐藏其他应用程序的光标...

最佳答案

事实上,我对这个问题有一个新的、更好的答案,涉及更多未记录的好东西。这是为了将来的后代:

NSWindow 上有一个未记录的方法,它可以完全满足您的需求:

@interface NSWindow (Private)
- (void )_setPreventsActivation:(bool)preventsActivation;
@end

[myWindow _setPreventsActivation:true];

当用户单击窗口时,这会阻止窗口激活其自身及其应用程序。

关于使用未记录的 API 的标准警告当然适用:Apple 可能会在某些时候更改此设置(尽管它已经存在于许多 OS X 版本中,因此很有可能不会),并且使用此设置可能会导致您的应用程序被拒绝Mac 应用商店。

关于macos - 防止点击 NSWindow/NSView 时激活应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25728111/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com