问题标签 [nspanel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
826 浏览

cocoa - NSWindow / NSPanel 无法在全屏应用前显示

在我的应用程序中,有一个实用程序窗口(实际上它是一个 NSPanel 对象)。它有时会出现并出现在其他应用程序窗口的前面。

但是当其他应用程序以全屏模式运行时,实用程序窗口不会显示。但是我发现当全屏应用程序运行时,它会创建新的桌面。

(我猜这里的桌面是人们在其他问题中谈论的空间。)

当我在 Launchpad 中检查“任务控制”时,我看到实用程序窗口显示在原始桌面中,而全屏应用程序则显示在用户当前看到的新桌面中。

我阅读了文档,发现了一些类似的问题。看来我应该设置窗口的收集行为。所以我尝试了这个:

它不起作用。

如何将我的窗口移动到全屏应用程序创建的当前桌面/空间?

0 投票
1 回答
132 浏览

cocoa - 如何编写切换方法来打开/关闭窗口?

我的应用程序中有一个 NSPanel 窗口,我想使用工具栏上的按钮切换打开和关闭。这似乎是一个相当基本的操作,并且确实是我在许多应用程序中看到的(例如 Inspector 视图)。但是,我正在努力寻找正确的方法来做到这一点。

我查看了 performClose: 和 makeKeyAndOrderFront: 方法,但我不知道如何让它们在我的方法中工作。基本上,我想要这样的东西

0 投票
1 回答
571 浏览

cocoa - 如何在 Cocoa 中实现我自己的弹出控件?

我想为我的 NSWindow 制作一个自定义的自动完成控件,有点像 Xcode 的花哨的控件,但我不知道怎么做。

我用自己的 NSWindowController 制作了一个 NSPanel,并用如下代码显示它:

NSPanel 本身有自己的子类实现-canBecomeKeyWindow(返回 YES),以便弹出窗口中的 NSTableView 可以接收关键事件。

这工作得很好。我唯一遇到的问题是,当我的 NSPanel 是关键窗口时,主应用程序 NSWindow 不是(显然),这会导致红色/黄色/绿色窗口控件变暗。显然,在像 Xcode 这样的程序中,窗口控件不会在您每次开始键入方法名称时变暗。

我在吠叫错误的树吗?NSPanel 是制作自定义弹出控件的错误方法吗?或者是否有某种方法可以使 NSPanel 成为关键窗口,而其父窗口(或其他窗口)不会使其窗口控件变暗?

编辑:有没有办法找出 Xcode 实际使用的是什么,比如它是否是 NSPanel?

0 投票
1 回答
520 浏览

macos - 在下一个 NSView -layout 发生后我该怎么做?

为了响应用户事件,我想:

  • 添加一个新的 NSView 到窗口,然后
  • 显示位于该视图正下方的 NSPanel

我已经完成了每一半。我可以添加一个新的子视图,容器视图会-updateConstraints识别它并添加正确的布局约束,以便下次执行布局时,它会在窗口中正确定位。另外,我有一个将面板放在屏幕上的 NSWindowController 子类。

不幸的是,有一个排序问题。我的面板控制器只是查看新的 NSView 的frame属性来决定将它放在哪里,但是在主事件循环的这次迭代中,该-layout方法还没有被调用,所以它仍然定位在 (0,0)。

(如果我将这两个功能分开,并且需要两个单独的用户事件用于“添加视图”和“创建面板”,那么面板将正确定位在视图下方。)

有没有办法将 NSPanel 附加到 NSView,就像使用布局约束一样?或者有没有办法说“这样做(窗口控制器的东西),但只有在下一次-layout调用之后”?

0 投票
1 回答
105 浏览

objective-c - 单击红色关闭按钮时,如何以及在何处更改关闭 NSPanel 的动画?

我在 NSWindowController 中展示了一个 NSPanel。当我按下 NSPanel 标题栏的红色小按钮时,我想用不同的动画改变它消失的方式。我怎么做?有没有类似 -(void)closeButtonPressed 的东西我可以改变。因为 NSWindow 的 -(void)close 没有像我想要的那样工作。当我展示它时,我会这样做:

当按下面板关闭按钮时,我想再次设置一个新框架并为其设置动画。有任何想法吗?

0 投票
1 回答
255 浏览

macos - 如何为浮动非激活面板显示调整大小光标?

我有一个非激活的浮动 NSPanel,即它styleMask包含NSNonactivatingPanelMask标志。由于此面板永远不会激活,因此当靠近面板的一个边缘时,系统不会显示通常的调整大小光标。

有没有办法让那些调整大小的光标显示在非激活面板上?例如,系统的字体面板以某种方式将其关闭。

0 投票
0 回答
86 浏览

cocoa - NSTableView 在 NSPanel 中重新加载(不是主窗口)

在我的主窗口中,我在第二个屏幕中打开一个 NSPanel,在内容视图中我有一个 NSTableView。在 reloadData 上,TableView 进行刷新,但在屏幕上数据没有刷新。我必须按 F3 或更改桌面和 TableView 刷新内容......怎么了?

0 投票
2 回答
446 浏览

objective-c - NSPanel - 为什么我不能在显示窗口之前设置我的面板标题和数据值?

结构简单:

示例控制器.h

示例控制器.m

随机控制器.m

...然后在一个方法中的随机控制器中,我通过以下方式显示 NSPanel:

我的问题是,无论如何,第一次 NSPanel 显示并显示自己时,标题始终仍设置为它在 Interface Builder 中的标题!即使我在exampleController init 方法中明确设置了标题。

我还尝试在 exampleController 的 init 方法中抛出NSLog(@"entryPanel: %@", entryPanel)并且在启动时它始终为 NULL。我不必在 init 中分配我所有的 IBOutlets,因为我已经在合成它们了?

我已经仔细检查了界面生成器中的所有内容。ExamplePanel.xib 的文件所有者设置为 exampleController 类。window 和 entryPanel 出口都引用了我们的 xib 文件中的 NSPanel。我错过了什么??

提前致谢!

编辑:只是添加。如果我打开窗口(..并看到默认的 IB 标题)然后关闭它并使用更改标题的方法重新打开它 - 它似乎有效!这个问题似乎只存在于第一次打开的窗口中。似乎在窗口第一次打开之前我的属性没有被分配?

0 投票
1 回答
295 浏览

objective-c - 如何检测 NSPanel 何时因失去焦点而关闭?例如,用户在 NSPanel(窗口?)之外单击

我有一个通用的 NSPanel 窗口,我在我的应用程序中用作首选项窗口。我有一个选择器,每次关闭窗口时都会调用它。该选择器的目的是保存用户选择偏好的状态(没有“保存”按钮)。

我有一个 NSButton(“CLOSE”),我很容易设置它来调用我的关闭选择器。

我对其进行了设置,以便当用户单击 NSPanel 左上角的 RED X 时,也会调用我的选择器,方法是:

这完美地工作。我的问题呢?如果用户在 NSPanel之外单击,该窗口也会关闭。例如,如果他们用鼠标点击弹出的 NSPanel 下方的浏览器窗口。这也会关闭窗口。

如何捕捉我的 NSPanel 失去焦点并关闭?我需要确保当这种情况发生时我也会调用我的选择器。

谢谢!

0 投票
4 回答
1093 浏览

macos - 单击 NSWindow/NSView 时阻止激活应用程序

我正在开发一个屏幕截图 Mac 应用程序。我正在尝试重建按 Cmd-Ctrl-Shift-4 时发生的情况:十字光标和屏幕截图的选择矩形。

我在所有其他窗口之上使用自定义无边框 NSWindow 。我禁用了光标来绘制我自己的选择矩形。

我的问题是,一旦我单击并拖动以捕获屏幕截图,我的应用程序就会被激活(因为单击被我的屏蔽窗口拦截)。

有没有一种方法可以让我在自定义视图/窗口中接收点击,而无需激活我的应用程序?

我尝试使用NSPanel带有NSNonactivatingPanelMask标志的an,但在这种情况下,我的光标有问题:当另一个应用程序处于活动状态时,我无法绘制自己的,因为我无法隐藏其他应用程序的光标......