xcode - 如何阻止 NSPanel 窃取另一个应用程序的输入

标签 xcode swift macos

我有一个 NSPanel。它的目的是位于所有空间中的所有东西之上,而且它做得很好。

我不希望它成为firstResponder并从另一个应用程序中获取焦点。

我像这样子类化 NSPanel

class SomePanelClass: NSPanel {
    override var acceptsFirstResponder: Bool{
        return false
    }
}

当窗口显示或我将其拖动到我所在的应用程序周围时,它似乎仍然具有焦点,并且它的名称位于菜单中,但击键不会在该应用程序中注册,直到我单击回其窗口。

我还可以采取其他措施来防止我的应用和面板窃取输入吗?

最佳答案

您可能想要重写 Panel 子类上的 canBecomeKeyWindow 以返回 NO。

- (BOOL) canBecomeKeyWindow {
  return NO;
}

关于xcode - 如何阻止 NSPanel 窃取另一个应用程序的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38236457/

相关文章:

ios - 如何将 uidatepicker 中的最大日期设置为 objective-c 中的当年 12 月

ios - 使用 Xcode 6.0.1 构建后,Game Center 无法识别应用程序

swift - 观察者的完成处理程序未调用,如何检查代码

swift - Mac OS 和 iOS 的通用类

objective-c - 如何从电影中创建动画 .gif?

macos - 安装 IO(语言)时出错

ios - 重用表格单元格中的 UIswitch

objective-c - 导航栏和标签栏之间留有 50% 高度的 subview

ios - 使用 AVAssetWriter 录制无缝音频

c - 在 Mac 上的新终端窗口中启动进程