macos – 单击NSWindowNSView时阻止激活应用程序

macos – 单击NSWindowNSView时阻止激活应用程序,第1张

概述我正在制作截图Mac应用程序.我正在尝试重建按下Cmd-Ctrl-Shift-4时发生的情况:十字线光标和屏幕截图的选择矩形. 我在所有其他窗户上使用自定义无边框NSWindow.我禁用光标以绘制自己的选择矩形. 我的问题是,只要我点击&拖动以捕获屏幕截图,我的应用程序被激活(因为点击被我的屏蔽窗口截获). 有没有办法在我的自定义视图/窗口中接收点击而不启动我的应用程序? 我尝试使用带有NSNon 我正在制作截图Mac应用程序.我正在尝试重建按下Cmd-Ctrl-Shift-4时发生的情况:十字线光标和屏幕截图的选择矩形.

我在所有其他窗户上使用自定义无边框NSWindow.我禁用光标以绘制自己的选择矩形.

我的问题是,只要我点击&拖动以捕获屏幕截图,我的应用程序被激活(因为点击被我的屏蔽窗口截获).

有没有办法在我的自定义视图/窗口中接收点击而不启动我的应用程序?

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

解决方法 实际上,我有一个新的,更好的答案,涉及更多无证件的好东西.这是为了未来的后代:

NSWindow上有一个没有文档记录的方法,可以完全按照您的要求进行 *** 作:

@interface NSWindow (Private)- (voID )_setPreventsActivation:(bool)preventsActivation;@end[myWindow _setPreventsActivation:true];

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

关于使用未记录的API的标准警告当然适用:Apple可能会在某些时候改变它(虽然它已经存在许多OS X版本所以他们很可能不会这样做)并且使用它可能会使您的应用程序被Mac应用程序拒绝商店.

总结

以上是内存溢出为你收集整理的macos – 单击NSWindow / NSView时阻止激活应用程序全部内容,希望文章能够帮你解决macos – 单击NSWindow / NSView时阻止激活应用程序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1011586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存