问题标签 [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.
cocoa - NSWindow / NSPanel 无法在全屏应用前显示
在我的应用程序中,有一个实用程序窗口(实际上它是一个 NSPanel 对象)。它有时会出现并出现在其他应用程序窗口的前面。
但是当其他应用程序以全屏模式运行时,实用程序窗口不会显示。但是我发现当全屏应用程序运行时,它会创建新的桌面。
(我猜这里的桌面是人们在其他问题中谈论的空间。)
当我在 Launchpad 中检查“任务控制”时,我看到实用程序窗口显示在原始桌面中,而全屏应用程序则显示在用户当前看到的新桌面中。
我阅读了文档,发现了一些类似的问题。看来我应该设置窗口的收集行为。所以我尝试了这个:
它不起作用。
如何将我的窗口移动到全屏应用程序创建的当前桌面/空间?
cocoa - 如何编写切换方法来打开/关闭窗口?
我的应用程序中有一个 NSPanel 窗口,我想使用工具栏上的按钮切换打开和关闭。这似乎是一个相当基本的操作,并且确实是我在许多应用程序中看到的(例如 Inspector 视图)。但是,我正在努力寻找正确的方法来做到这一点。
我查看了 performClose: 和 makeKeyAndOrderFront: 方法,但我不知道如何让它们在我的方法中工作。基本上,我想要这样的东西
cocoa - 如何在 Cocoa 中实现我自己的弹出控件?
我想为我的 NSWindow 制作一个自定义的自动完成控件,有点像 Xcode 的花哨的控件,但我不知道怎么做。
我用自己的 NSWindowController 制作了一个 NSPanel,并用如下代码显示它:
NSPanel 本身有自己的子类实现-canBecomeKeyWindow
(返回 YES),以便弹出窗口中的 NSTableView 可以接收关键事件。
这工作得很好。我唯一遇到的问题是,当我的 NSPanel 是关键窗口时,主应用程序 NSWindow 不是(显然),这会导致红色/黄色/绿色窗口控件变暗。显然,在像 Xcode 这样的程序中,窗口控件不会在您每次开始键入方法名称时变暗。
我在吠叫错误的树吗?NSPanel 是制作自定义弹出控件的错误方法吗?或者是否有某种方法可以使 NSPanel 成为关键窗口,而其父窗口(或其他窗口)不会使其窗口控件变暗?
编辑:有没有办法找出 Xcode 实际使用的是什么,比如它是否是 NSPanel?
macos - 在下一个 NSView -layout 发生后我该怎么做?
为了响应用户事件,我想:
- 添加一个新的 NSView 到窗口,然后
- 显示位于该视图正下方的 NSPanel
我已经完成了每一半。我可以添加一个新的子视图,容器视图会-updateConstraints
识别它并添加正确的布局约束,以便下次执行布局时,它会在窗口中正确定位。另外,我有一个将面板放在屏幕上的 NSWindowController 子类。
不幸的是,有一个排序问题。我的面板控制器只是查看新的 NSView 的frame
属性来决定将它放在哪里,但是在主事件循环的这次迭代中,该-layout
方法还没有被调用,所以它仍然定位在 (0,0)。
(如果我将这两个功能分开,并且需要两个单独的用户事件用于“添加视图”和“创建面板”,那么面板将正确定位在视图下方。)
有没有办法将 NSPanel 附加到 NSView,就像使用布局约束一样?或者有没有办法说“这样做(窗口控制器的东西),但只有在下一次-layout
调用之后”?
objective-c - 单击红色关闭按钮时,如何以及在何处更改关闭 NSPanel 的动画?
我在 NSWindowController 中展示了一个 NSPanel。当我按下 NSPanel 标题栏的红色小按钮时,我想用不同的动画改变它消失的方式。我怎么做?有没有类似 -(void)closeButtonPressed 的东西我可以改变。因为 NSWindow 的 -(void)close 没有像我想要的那样工作。当我展示它时,我会这样做:
当按下面板关闭按钮时,我想再次设置一个新框架并为其设置动画。有任何想法吗?
macos - 如何为浮动非激活面板显示调整大小光标?
我有一个非激活的浮动 NSPanel,即它styleMask
包含NSNonactivatingPanelMask
标志。由于此面板永远不会激活,因此当靠近面板的一个边缘时,系统不会显示通常的调整大小光标。
有没有办法让那些调整大小的光标显示在非激活面板上?例如,系统的字体面板以某种方式将其关闭。
cocoa - NSTableView 在 NSPanel 中重新加载(不是主窗口)
在我的主窗口中,我在第二个屏幕中打开一个 NSPanel,在内容视图中我有一个 NSTableView。在 reloadData 上,TableView 进行刷新,但在屏幕上数据没有刷新。我必须按 F3 或更改桌面和 TableView 刷新内容......怎么了?
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 标题)然后关闭它并使用更改标题的方法重新打开它 - 它似乎有效!这个问题似乎只存在于第一次打开的窗口中。似乎在窗口第一次打开之前我的属性没有被分配?
objective-c - 如何检测 NSPanel 何时因失去焦点而关闭?例如,用户在 NSPanel(窗口?)之外单击
我有一个通用的 NSPanel 窗口,我在我的应用程序中用作首选项窗口。我有一个选择器,每次关闭窗口时都会调用它。该选择器的目的是保存用户选择偏好的状态(没有“保存”按钮)。
我有一个 NSButton(“CLOSE”),我很容易设置它来调用我的关闭选择器。
我对其进行了设置,以便当用户单击 NSPanel 左上角的 RED X 时,也会调用我的选择器,方法是:
这完美地工作。我的问题呢?如果用户在 NSPanel之外单击,该窗口也会关闭。例如,如果他们用鼠标点击弹出的 NSPanel 下方的浏览器窗口。这也会关闭窗口。
如何捕捉我的 NSPanel 失去焦点并关闭?我需要确保当这种情况发生时我也会调用我的选择器。
谢谢!
macos - 单击 NSWindow/NSView 时阻止激活应用程序
我正在开发一个屏幕截图 Mac 应用程序。我正在尝试重建按 Cmd-Ctrl-Shift-4 时发生的情况:十字光标和屏幕截图的选择矩形。
我在所有其他窗口之上使用自定义无边框 NSWindow 。我禁用了光标来绘制我自己的选择矩形。
我的问题是,一旦我单击并拖动以捕获屏幕截图,我的应用程序就会被激活(因为单击被我的屏蔽窗口拦截)。
有没有一种方法可以让我在自定义视图/窗口中接收点击,而无需激活我的应用程序?
我尝试使用NSPanel
带有NSNonactivatingPanelMask
标志的an,但在这种情况下,我的光标有问题:当另一个应用程序处于活动状态时,我无法绘制自己的,因为我无法隐藏其他应用程序的光标......