objective-c - 如何在 Mac 操作系统中创建 "No Activate"窗口

标签 objective-c macos cocoa nswindow macos-carbon

在 Windows 平台中,窗口有一个名为 SWP_NOACTIVATE 的属性,该属性会导致窗口显示为非事件状态,并且在单击鼠标后,该窗口不会获得焦点。例如,对于可以通过鼠标单击键入的虚拟键盘来说,它很有用。 Mac 中的等效解决方案是什么?换句话说,我怎样才能实现一个在单击它时不会改变焦点的窗口? 谢谢。

最佳答案

您在这个问题上添加了“Cocoa”和“Carbon”标签,但由于没有人应该再做Carbon,所以我将尝试仅使用Cocoa来解决您的问题。

查看这两个 NSWindow 方法:canBecomeKeyWindowcanBecomeMainWindow 。当您希望窗口不可聚焦时,请考虑对 NSWindow 进行子类化并为其中一个(或两个)返回“NO”。

还有一个有趣的方法,称为 setIgnoresMouseEvents: ,这使得窗口对鼠标单击和事件“透明”。

关于objective-c - 如何在 Mac 操作系统中创建 "No Activate"窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10620106/

相关文章:

iphone - 如何用不同的变量重复一个 Action ?

ios - 如何在 Objective-C 中对非常大的数字求幂?

ios - MyObject *objectOne = (MyObject *)recognizer.view;

macos - 如何在 bash 中确定 CD/DVD 的卷名?

Objective-C : Why is my retain count not 1?

objective-c - Objective-C:虽然可以完美编译,但应用程序仅运行一次

android - 尝试在Mac上的Android模拟器上运行NativeScript应用程序的Gradle错误

macos - NSTableView 中的自定义 NSView 不显示所有 subview

ios - CoreData 合并插入

objective-c - 如何在核心数据实体中本地化属性的默认值