问题标签 [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 投票
0 回答
249 浏览

resize - 初始调整大小后无法调整 NSPanel 的大小

当用户关闭项目时,我想调整 NSPanel 的大小。我最初可以完美地调整它的大小:

但是当我稍后减少项目数量并调用调整大小功能时,它不起作用:

有任何想法吗?

0 投票
1 回答
43 浏览

objective-c - 工作表显示时如何防止鼠标事件?

我发现当工作表显示时NSView'srightMouseUp可能仍然处于活动状态。我使用了此代码。

我想禁止rightMouseUp。怎么做?

0 投票
1 回答
385 浏览

objective-c - 创建不阻止与其他窗口交互的工作表

据我所知,在不“冻结”应用程序的情况下,特定窗口的工作表模式只能是NSSavePanels、NSOpenPanels 和NSAlerts 窗口(因为 NSAlert 不是 NSWindow 或 NSPanel 子类,但它有一个关联的窗口);例如,如果我希望通用NSPanel成为这样的工作表,我无法阻止它冻结应用程序,因为启动该工作表的唯一(?)方法是使用

那么,有没有办法将通用面板设置为工作表而不冻结整个应用程序?

0 投票
0 回答
48 浏览

objective-c - 如何避免 NSpanel 作为不同的对象打开

我有一个NSCollectionView由 10个组成的,还从对象库中NSButtons拖了一个。NSpanel如果我单击一个按钮NSpanel,应该会出现。如果我单击下一个按钮,最后生成的 NSpanel 应该关闭并打开另一个 NSpanel。我的问题是生成了 NSpanel,如果我单击第二个按钮,则会出现另一个 NSpanel 并且前一个没有关闭。

0 投票
1 回答
477 浏览

objective-c - 带有 NSWindowController 的 NSPanel 显示在 xcode 中,但未显示在归档应用程序中

我有一个问题,PreferencePanel只有当我在发布和调试模式下从 Xcode 启动它时才会出现。但是,如果我启动应用程序的归档 .app,则单击Preferences按钮不会发生任何事情。如果从 Xcode 启动,如果我打开 pref 面板,将其关闭并等待几秒钟,然后再次尝试该命令,也没有任何反应,面板不会出现。我正在使用一个名为“PreferenceController”的类,并在方法NSWindowController中加载一个 nib 文件。xib 的 File Owner 设置为“ ”,window 属性与 xib 中的面板相连。-(id)initreturn [super initWithWindowNibName:@"Preferences"];PreferenceController

在我的 AppController 中,我有一个-(IBAction)showPreferencePanel:(id)sender打开面板的方法。

AppController实例化在mainMenu.xib.

谢谢你的帮助。

0 投票
1 回答
712 浏览

objective-c - NSPanel 未显示。

我的处理方法可能错了,所以我很感谢你的耐心。

我的主 XIB 文件中有一个按钮链接到我的 document.m 文件中的此方法:

_FileTagWindowController 被声明为 document.h 中的一个属性,并在调用该方法时使用断点,据我所知是正确初始化,但是 _windowNibName 和 _window 仍然是 nil

FileTagWindowController.h 看起来像这样。

FileTagWindowController.m 看起来像这样:

在我的 FileTagWindowController.xib 中,我将File Owner设置为 FileTagWindowController 作为自定义类。我将文件所有者的“窗口”插座链接到窗口(NSPanel)。这就是所有应该要求的正确吗?WindowDidLoad 中的 NSLOG 语句永远不会被调用。我尝试在 FileTagWindowController.m 中使用 [super initWithWindowNibName] ,但这不仅会导致应用程序崩溃,还会导致 Xcode 崩溃,并且会出现无休止的初始化循环。我在这里遗漏了一些明显的东西吗?

非常感谢。

0 投票
1 回答
458 浏览

macos - 将 NSPanel 显示为创建偏移量的工作表

我正在使用此代码显示面板:

panel是一个 IBOutlet(它在 IB 中实例化)。它是 NSPanel 的子类。

windows是一个窗口数组。如果没有窗口,则面板显示为新窗口。

问题

当我显示具有特定视图且不windows为空的面板时,该面板显示为工作表。第一次发生这种情况时,总会有一个偏移量。以下是该方法第一次调用和第二次调用的截图(均为非空):windows

第一次

第二次

如果我使用这个,这个错误会消失:

在这种情况下,尺寸是正确的,但是工作表不再聚焦并且保持不聚焦(因此上述屏幕截图中的蓝色按钮一直是白色的)。我该怎么做才能让工作表每次都能正确显示?第一次会发生什么下次不会发生?

0 投票
1 回答
915 浏览

objective-c - “非激活”模式下的 NSPanel 并不总是显示正确的光标

我在 XCode 4.6 中创建了一个简单的 Cocoa-Application ,NSPanel而不是默认的NSWindow. 当我启用非激活选项并启动应用程序时,一切正常:

面板显示在其他所有内容的前面,当鼠标光标悬停在面板边缘时,它会从普通箭头光标变为适当的调整大小光标,因此用户知道他可以调整面板大小。

只要我不单击任何其他应用程序(例如 Safari 或 Finder),它就可以正常工作。

从我将焦点转移到另一个应用程序的那一刻起,我可以随意单击并将鼠标悬停在我的面板上,光标样式将不再改变 - 它始终保持箭头并且不可能返回到正常行为。

面板保持可选择状态,在前面,您仍然可以移动和调整它的大小,但鼠标光标始终保持箭头。然后,您甚至无法使用以下内容手动更改它:[[NSCursor crosshairCursor] set].

因此,我需要找到一种方法来创建一个NSPanel即使您将焦点放在另一个应用程序上也能保持正常的自动更改光标样式时悬停在面板边缘行为的方法。

我已经尝试使用自定义的NSPanel-class,我已经覆盖了 canBecomeKeyWindowand canBecomeMainWindow方法,以便它们返回 YES 但即使我制作了我的 PanelKeyWindowMainWindow...

...它不能解决光标问题。

如果有人可以在这里帮助我会很棒:)

PS.:我的项目中 Base SDK 和 Deployment Target 设置为 10.8


所以我发现所描述的问题与面板的窗口状态无关。将其设置为 key 还是 main 并不重要,而是光标问题(始终保持箭头)与应用程序的激活状态有关。

只要拥有面板的应用程序处于活动状态,一切都会正常工作,但是如果您单击另一个应用程序,我的应用程序将被停用并且不会再次激活 - 即使您单击面板 - 因为non-activating启用了“”-选项。

问题是我需要“ non activating”选项,因为我正在创建一个状态栏屏幕捕获应用程序,它应该在其他所有内容之前显示和操作,但不会停用任何正在运行的应用程序。我可以通过

[NSApp activateIgnoringOtherApps];

但是然后截取在 Safari 中运行的全屏视频的屏幕截图会停用 Safari 并最小化视频,这是我不想要的。

0 投票
3 回答
812 浏览

objective-c - 在 Cocoa 中使用 NSTimer 关闭自定义 NSPanel

我创建了自定义 NSPanel,并使用 Sheet 显示它。它没有任何关闭按钮,我想在 10 秒后用 NSTimer 关闭这个面板。我怎样才能做到这一点?

closePanel() 函数:

0 投票
1 回答
180 浏览

objective-c - 在 NSPanel 上方发出警报?

我有一个 NSPanel。我使用以下代码:

此面板有一个包含 NSTextField 的视图。对于 NSTextField 文本的某些情况,我需要在 NSPanel 视图顶部显示警报。引发警报的代码:

知道我怎么能做到这一点?