Jos*_*osh 5 macos cocoa spotlight textinput nswindow
我需要在cocoa应用程序中生成一个悬浮在主窗口上方的窗口.我希望这个主窗口允许用户在输入框中输入一些文本.一切都很好,直到文本输入框实际上获得焦点.主窗口变为"停用".这个窗口是无边框的,是一个稍微定制的形状 - 我想它更像是一个悬停卡而不是其他任何东西.
基本上,我希望这个东西几乎完全像Spotlight(Apple + Space)一样工作 - 你可以输入文本,但这是一个辅助操作,在更高的用户体验环境中,你不希望这种刺激主窗口变灰(变为非活动状态)的效果.您会注意到当某个应用程序打开并处于焦点时,聚光灯不会导致该应用程序的窗口变为非活动状态.
出现此问题是因为文本输入似乎要求子窗口成为关键窗口(它不会让您将光标放在文本输入字段中).当它变为键时,主窗口变为非活动状态.
到目前为止,我已经尝试过:
任何人Cocoa/OSX向导有什么想法吗?我对这个有点痴迷.痒我不能刮.
编辑:还尝试覆盖子窗口上的以下内容.单击时,窗口使主应用程序窗口变为非活动状态.
- (BOOL)canBecomeKeyWindow {
return YES;
}
- (BOOL)canBecomeMainWindow {
return NO;
}
Run Code Online (Sandbox Code Playgroud)
编辑2:在与NSMenu搞砸了一段时间后,我取消了这种方法.然而,我似乎找到了一些东西.在NSPanel中有一个窗口样式掩码,名为:
NSNonactivatingPanelMask
The panel can receive keyboard input without activating the owning application.
Valid only for an instance of NSPanel or its subclasses; not valid for a window.
Run Code Online (Sandbox Code Playgroud)
现在尝试一下......
编辑3:NSNonactivatingPanelMask没有做到这一点.没有想法.