- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以在不提供 NSPanel 关键窗口状态的情况下为 NSPanel 内的 NSView 提供第一响应者状态(使主应用程序窗口退出键)?
谢谢。
最佳答案
好吧,我最终解决了这个问题,但需要进行大量研究,因此我将在此处发布详细信息,以防其他人遇到同样的问题。首先,一些基础知识:
-isKeyWindow
来假装窗口认为它是关键,但这不会赋予窗口中包含的 View 第一响应者状态。我的场景:
我在主应用程序窗口中添加了一个包含 NSTableView
的子窗口(原因无关)。子窗口是一个带有 NSBorderlessWindowMask
的 NSPanel
。我想给 NSTableView
第一响应者状态而不使面板成为关键窗口,因为它夺走了主窗口的焦点(子窗口幻象的全部目的是使子窗口看起来像它是主窗口的一部分)。
我尝试的第一件事是通过覆盖 isKeyWindow
返回 YES
来欺骗 TableView ,使其认为它位于关键窗口内。这使得 TableView 绘制得好像它是第一响应者一样,但仍然没有给它第一响应者状态。
解决方案:
所以默认情况下,NSBorderlessWindowMask 不会允许窗口成为关键。为了使 TableView 成为第一响应者,窗口必须是关键,因此我重写了无边框窗口子类中的 canBecomeKeyWindow
以返回 YES
。当然,这剥夺了主窗口的关键状态,这是我想避免的事情之一。为了解决这个问题,我对我的主窗口进行了子类化并覆盖了以下方法:
- (BOOL)isMainWindow
{
return YES;
}
- (BOOL)isKeyWindow
{
return ([NSApp isActive]) ? YES : [super isKeyWindow];
}
这个子类检查应用程序是否处于事件状态,如果是,它总是返回YES
,这样无论应用程序中哪个窗口处于事件状态,主窗口的行为总是就像它是事件的一样仍然是关键。这种方式给人一种错觉,即您可以同时让多个窗口成为关键,并使您能够将关键窗口状态转移到另一个窗口,而不会在主窗口上丢失它。希望这有帮助!
关于cocoa - 使NSPanel中的NSView成为无关键窗口状态的第一响应者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4916100/
我有一个通用的 NSPanel 窗口,我将其用作应用程序中的首选项窗口。我有一个选择器,每次窗口关闭时都会调用它。该选择器的目的是保存用户选择的首选项的状态(没有“保存”按钮)。 我有一个 NSBut
所以,我正在查看this源,尝试使用 NSPanel 制作带有自定义弹出框的状态栏应用程序之一 - 一切都运转良好,花花公子。单击菜单会调用 [panel makeKeyandOrderFront:n
我正在开发一个基于文档的 Cocoa 应用程序。启动时,用户会看到一个“欢迎面板”(类型为 NSPanel),其中包含用于“创建新文档”和“打开现有文档”等常见操作的按钮。这些操作分别链接到第一响应者
我有一个 NSPanel,我想将其设置为 keyWindow ,以便它应该发布 NSWindowDidBecomeKeyNotification 但是,即使调用 makeKeyWindow 方法,通知
好的,这是我的情况: 我正在尝试类似 HUD 的自定义控件集合,SNRHUDKit . 我专门使用 SNRHUDWindow 作为我的主窗口类 无论如何,虽然它实际上有效,但当用户拖动其右下角。 SN
结构简单: exampleController.h: #import @interface exampleController : NSWindowController { @public IBOu
我的 NSPanel 窗口始终位于所有其他应用程序窗口的顶部。这就是我加载它的方式: [NSApp beginSheet:[self window] modalForWindow:[rootDocum
我正在开发一个小而简单的状态菜单应用程序。 有一个菜单,当用户单击它时,应该会出现一个 HUD 窗口(NSPanel)。这就是我显示面板的方式: [hudWindow makeKeyAndOrderF
我正在尝试更改 NSPanel 的标题栏高度。我尝试了以下方法,但没有按预期工作: - (void)applicationDidFinishLaunching:(NSNotification *)aN
我一直在网上搜索,但没有遇到更改HUD透明度(所有面板透明度,包括标题栏)的方法。可以改吗? 谢谢 最佳答案 您应该能够使用从 NSWindow 继承的 setAlphaValue: http://d
如果我有一个黑色/透明的 HUD NSPanel,我会向其中添加一些控件。如何使控件看起来正确?即是黑色/透明而不是白色/不透明? 最佳答案 不幸的是,你必须自己滚动,苹果只提供了窗口。 但是,有一些
大家好,关于 NSPanel 的问题一直困扰着我。我喜欢 NSPanel HUD 的外观,但对于我正在做的项目,我需要面板不被移动。有谁知道任何可能的解决方案可以使我的 NSPanel 根本无法移动但
我正在尝试为我的应用程序添加一些样式,这让我发疯。我想要拍摄一张透明的图像并将其用作窗口或 NSPanel。我认为这必须以编程方式完成,但我想在 Interface Builder 中完成。我怎样才能
在我的应用程序中,有一个实用程序窗口(实际上它是一个 NSPanel 对象)。它有时会出现在其他应用程序的窗口前面。 但是当其他应用程序以全屏模式运行时,实用程序窗口不会显示。但我发现当全屏应用程序运
我在尝试创建类似于 VLC 均衡器 ( image here ) 中使用的 HUD 样式 NSPanel 时遇到困难。首先,我想要带有关闭按钮和标题的透视面板。这是我试图用来实现的代码 - (IBAc
我有一个 NSPanel。它的目的是位于所有空间中的所有东西之上,而且它做得很好。 我不希望它成为 firstResponder 并从另一个应用程序获取焦点。 我像这样对 NSPanel 进行子分类
也许我在这里遗漏了一些非常简单的东西(我希望如此),但是有没有一个技巧可以在运行时更改 NSPanel 的标题?明显的 [panel setTitle:@"New title"] 似乎不起作用。 我正
我有一个使用 NSOpenPanel 的应用程序,以便用户可以选择多个文件进行导入,并且还有一个典型的首选项面板。首选项面板存储在 .xib 文件中。 用户调用首选项面板后出现问题。在此之前,NSOp
我有一个带有按钮的自定义 PDE,我想在单击它时显示一个新的 NSPanel。当我使用 orderFront 或 makeKeyAndOrderFront 函数时,面板出现但在打印对话框窗口下方并且没
我有一个自定义 NSPanel:http://cl.ly/K8SY 我将其设置为 NSPopUpMenuWindowLevel,即我希望其保持的级别。一个例子是聚光灯菜单,当您单击它时,背景窗口中的任
我是一名优秀的程序员,十分优秀!