CocoaObjective-C – 没有主窗口的文本输入的子窗口变为非活动状态

CocoaObjective-C – 没有主窗口的文本输入的子窗口变为非活动状态,第1张

概述我需要在 cocoa应用程序中生成一个悬浮在主窗口上方的窗口.我希望这个主窗口允许用户在输入框中输入一些文本.一切都很好,直到文本输入框实际上获得焦点.主窗口变为“停用”.这个窗口是无边框的,是一个稍微定制的形状 – 我想它更像是一个悬停卡而不是其他任何东西. 基本上,我希望这个东西几乎与Spotlight(Apple Space)一样工作 – 你可以输入文本,但这是一个辅助 *** 作,在更高的用户体验 我需要在 cocoa应用程序中生成一个悬浮在主窗口上方的窗口.我希望这个主窗口允许用户在输入框中输入一些文本.一切都很好,直到文本输入框实际上获得焦点.主窗口变为“停用”.这个窗口是无边框的,是一个稍微定制的形状 – 我想它更像是一个悬停卡而不是其他任何东西.

基本上,我希望这个东西几乎与Spotlight(Apple Space)一样工作 – 你可以输入文本,但这是一个辅助 *** 作,在更高的用户体验环境中,你不需要刺耳的效果主窗口变灰(变为非活动状态).您会注意到当某个应用程序打开并处于焦点时,聚光灯不会导致该应用程序的窗口变为非活动状态.

出现此问题是因为文本输入似乎要求子窗口成为关键窗口(它不会让您将光标放在文本输入字段中).当它变为键时,主窗口变为非活动状态.

到目前为止,我已经尝试过:

>为我的主应用程序子类化NSWindow并覆盖isKeyWindow,这样当应用程序不再是用户关注时(而不是窗口)它只会丢失密钥.这会产生意外的效果,即与子窗口的键状态发生碰撞,并对键盘输入产生非常奇怪的影响(某些键未被捕获,如删除)
>创建视图而不是窗口.因为this问题不起作用 – 这些天你无法绘制Webkit WebVIEw.

任何人Cocoa / OSX向导有什么想法吗?我对这个有点痴迷.痒我不能刮.

编辑:还尝试覆盖子窗口上的以下内容.单击时,窗口使主应用程序窗口变为非活动状态.

- (BOol)canBecomeKeyWindow {    return YES;}- (BOol)canBecomeMainWindow {    return NO;}

编辑2:
在与NSMenu搞砸一段时间后,我取消了这种方法.然而,我似乎找到了一些东西.在NSPanel中有一个窗口样式掩码,名为:

NSNonactivatingPanelMaskThe 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.

现在尝试一下……

编辑3:NSNonactivatingPanelMask没有做到这一点.没有想法.

解决方法 你想要的是一个可以成为 key window但不能成为 main window的窗口.你可以自己实现这样一个类,但这基本上就是NSPanel的用途,所以你可以先尝试一下. 总结

以上是内存溢出为你收集整理的Cocoa / Objective-C – 没有主窗口的文本输入的子窗口变为非活动状态全部内容,希望文章能够帮你解决Cocoa / Objective-C – 没有主窗口的文本输入的子窗口变为非活动状态所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1008380.html

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

发表评论

登录后才能评论

评论列表(0条)

保存